如何将Javascript与动态填充的checkboxList集成?

时间:2015-09-08 17:40:06

标签: javascript asp.net vb.net

我有这个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 复选框列表控件中选择例如作业标题时,会显示txtTitleChangeclasstitles,允许用户在其中输入数据。

这是一种享受。

但是,由于用户的更改请求允许复选框列表中的任何选定列表项保持选中状态,我决定使用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一样?

这样,每当用户填写表单并选择复选框列表中的任何项目时,所选项目仍会为特定用户选择?

如果我在另一个页面中查询数据库,但用户希望在一个页面上完成所有操作,我就可以这样做。

1 个答案:

答案 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:手绘类型代码仅用于解释概念。可能包含拼写错误)