Ich habe folgende Client-Seite Code in ASPX-Seite innerhalb einer Datalist itemtemplate, die Fragen aus der Datenbank, wie dies geschieht:Konvertieren von clientseitigen HTML-Optionsfeldern in ASP.net-Websteuerelemente mit dynamischen IDs. (ASP.net) (VB)
<Itemtemplate>
<b> <%=GetQuestionNum()%>)
<%#Server.HtmlEncode(Eval("Text").ToString())%></b>
<br />
<asp:Panel ID="A" runat="server" Visible='<%#GetVisible(Eval("OptionA").Tostring())%>'>
<input name="Q<%#Eval("ID")%>" type="radio" value="A">
<%#Server.HtmlEncode(Eval("OptionA").ToString())%>
</option><br />
</asp:Panel>
<asp:Panel ID="B" runat="server" Visible='<%#GetVisible(Eval("OptionB").Tostring())%>'>
<input name="Q<%#Eval("ID")%>" type="radio" value="B">
<%#Server.HtmlEncode(Eval("OptionB").ToString())%>
</option><br />
</asp:Panel>
<asp:Panel ID="C" runat="server" Visible='<%#GetVisible(Eval("OptionC").Tostring())%>'>
<input name="Q<%#Eval("ID")%>" type="radio" value="C">
<%#Server.HtmlEncode(Eval("OptionC").ToString())%>
</option><br />
</asp:Panel>
<asp:Panel ID="D" runat="server" Visible='<%#GetVisible(Eval("OptionD").Tostring())%>'>
<input name="Q<%#Eval("ID")%>" type="radio" value="D">
<%#Server.HtmlEncode(Eval("OptionD").ToString())%>
</option><br />
</asp:Panel></itemtemplate>
Der Ausgang ist wie:
1) Was ist Ihre Altersgruppe?
- Option 1
- Option 2
- Option 3
- Option 4
die IDs der Optionsfelder sind dynamisch ("Q" & QuestionID). Wenn auf eine Frage keine Antwort vorliegt, gibt die GetVisible-Funktion false zurück und das enthaltende Bedienfeld ist ausgeblendet.
Ich habe versucht, das HTML loszuwerden und diese durch asp: radiobuttons zu ersetzen, aber es ist nicht möglich IDs von Databinding zu setzen .. nur einfach. Ich habe versucht, so etwas wie:
<asp:RadioButton ID="Q<%#Eval("ID")%>" runat="server" Visible='<%#GetVisible(Eval("OptionA").Tostring())%>'
Text='<%#Server.HtmlEncode(Eval("OptionA").ToString())%>' />
Hier ist die Funktion, die Daten zur Verfügung stellt:
Public Shared Function GetQuestionsForSurvey(ByVal id As Integer) As DataSet
Dim dsQuestions As DataSet = New DataSet()
Try
Using mConnection As New SqlConnection(Config.ConnectionString)
Dim mCommand As SqlCommand = New SqlCommand("sprocQuestionSelectList", mConnection)
mCommand.CommandType = CommandType.StoredProcedure
Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter()
myDataAdapter.SelectCommand = mCommand
mCommand.CommandType = CommandType.StoredProcedure
mCommand.Parameters.AddWithValue("@id", id)
myDataAdapter.Fill(dsQuestions)
mConnection.Close()
Return dsQuestions
End Using
Catch ex As Exception
Throw
End Try
End Function
aber ich finde es unmöglich, die Arbeit mit den HTML-Kontrollen, dh erhält ihren .text Wert von Code-Behind oder Ereignisse hinzufügen!
Bitte schlagen Sie einen Experten eine bessere Möglichkeit vor, den HTML-Code durch geeignete ASP.net-Websteuerelemente oder aus dem Codebehind zu ersetzen und auszugeben. Oder weisen Sie mich in die richtige Richtung?
Danke: 0)
Das war eine große Hilfe, Danke – Phil