我有这个checkboxList控件,我手动填充数据并与JavaScript完全集成:
<script type="text/javascript">
function ShowHide(chk, txt,txt2) {
//Get the Textbox based on selected checkbox
ctrltxt = document.getElementById(txt);
ctrltxt2= document.getElementById(txt2);
//Check if checkbox is checked or not
if (chk.checked) {
//Show the Textbox
ctrltxt.style.display = 'block';
ctrltxt2.style.display = 'block';
} else {
//Hide the textbox
ctrltxt.style.display = 'none';
ctrltxt2.style.display = 'none';
}
}
</script>
<table style="border: 0; border-style: solid">
<tr valign="top" style="background-color: #f5f7f7; font-size: large; white-space: nowrap;">
<td style="font-size: large; font-weight: bold;">Request a Review of:</td>
<td>
<asp:CheckBoxList ID="ckRequestReview" runat="server" CssClass="cb" Style="border-width: 0;" RepeatDirection="horizontal" RepeatColumns="4" RepeatLayout="Table">
<asp:ListItem onclick="ShowHide(this,'txtTitleChange','classtitles');">Job Title</asp:ListItem>
<asp:ListItem onclick="ShowHide(this,'txtPayGradeChange','gradeclass');">Pay Grade</asp:ListItem>
<asp:ListItem onclick="ShowHide(this,'txtClassSpecChange','clssSpec');">Specs</asp:ListItem>
</asp:CheckBoxList>
</td>
</tr>
</table>
以上只是这个问题的相关代码。
当用户从 ckRequestReview 复选框列表控件中选择例如作业标题时,会显示txtTitleChange
和classtitles
,允许用户在其中输入数据。
这是一种享受。
但是,由于用户的更改请求允许复选框列表中的任何选定列表项保持选中状态,我决定使用checkboxlist从数据库中动态填充。
下面是新的checkboxList:
Private Sub PopulateChoices()
Using conn As New SqlConnection()
conn.ConnectionString = ConfigurationManager.ConnectionStrings("CNchoices").ConnectionString()
Using cmd As New SqlCommand()
cmd.CommandText = "select * from muytable"
cmd.Connection = conn
conn.Open()
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Dim item As New ListItem()
item.Text = sdr("ckRequestReview").ToString()
item.Value = sdr("ID").ToString()
item.Selected = Convert.ToBoolean(sdr("IsSelected"))
ckRequestReview.Items.Add(item)
End While
End Using
conn.Close()
End Using
End Using
End Sub
问题:
如何将上面的JavaScript与同一checkboxList的动态填充版本集成,就像我手动填充的checkboxList一样?
这样,每当用户填写表单并选择复选框列表中的任何项目时,所选项目仍会为特定用户选择?
如果我在另一个页面中查询数据库,但用户希望在一个页面上完成所有操作,我就可以这样做。
答案 0 :(得分:0)
您可以使用Attributes
集合将客户端属性添加到ListItem
。
下面是一些如何进行操作的示例代码。
While sdr.Read()
Dim item As New ListItem()
'-- just a sample... set the appropriate javascript code here
item.Attributes.Add("onclick", "ShowHide(this,'txtTitleChange','classtitles');")
item.Text = sdr("ckRequestReview").ToString()
item.Value = sdr("ID").ToString()
item.Selected = Convert.ToBoolean(sdr("IsSelected"))
ckRequestReview.Items.Add(item)
End While
( NB:手绘类型代码仅用于解释概念。可能包含拼写错误)