0

脚本:

    $(document).ready(function () {
          $('#Custom').hide('fast'); 
          $('#rbtnEntire').click(function () {
             $('#Custom').hide('fast');
            $('#Entire').show('fast');
            });

          $('#rbtnCustom').click(function () {
            $('#Entire').hide('fast');
            $('#Custom').show('fast');
           });
      });

    function showdiv() {
        document.getElementById("divChkList").style.display = "block";
     }

.aspx 文件:

<div style="height:700; width:500;">
<div id="select scan type">
    <asp:RadioButton ID="rbtnEntire" runat="server" Text="Entire" 
        GroupName="s1"/>
    <asp:RadioButton ID="rbtnCustom" runat="server" Text="Custom" 
        GroupName="s1"/>
</div>
<div id="Entire" style="float:left; height:1000; width:1000; border: solid 1px;  margin-left:5px;">
    Entire<br />
    <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" ShowLines="True" ExpandDepth="2">
     <Nodes>
     <asp:TreeNode Text="Entire">
          <asp:TreeNode Text="VM">
            <asp:TreeNode Text="MBS1">   
        </asp:TreeNode>
        <asp:TreeNode Text="PF1"></asp:TreeNode>
        </asp:TreeNode>


        <asp:TreeNode Text="VM1">
        <asp:TreeNode Text="MBS2"></asp:TreeNode>
        <asp:TreeNode Text="PF2"></asp:TreeNode>
        </asp:TreeNode>

    </asp:TreeNode>
    </Nodes>
    </asp:TreeView>
        <p>
    <asp:Button ID="btnCreateXML" runat="server" onclick="btnCreateXML_Click" 
        Text="Create XML" />
   <asp:Label ID="lblResult" runat="server" Text="Label"></asp:Label>
   </p></div>
   <div id="Custom" style="float:left; height:1000; width:2000; border: solid 1px; margin-left:10px;">

    Custom <br />
    <div id="Manual" style="border:solid 1px; float:left;">
        Manual Scan Controls
    </div>

    <div id="Multiple" style="border:solid 1px; float:left;">
    Multiple Scan Controls
        <table>
                <tr>
                    <td valign="top" style="width: 165px">  
                          <asp:PlaceHolder ID="phDDLCHK" runat="server"></asp:PlaceHolder>
                    </td>
                    <td valign="top">
                          <asp:Button ID="btn" runat="server" Text="Get Checked" OnClick="btn_Click" />
                    </td>
                    <td valign="top">
                          <asp:Label ID="lblSelectedItem" runat="server"></asp:Label>
                    </td>
              </tr>
        </table>
     </div>
     <asp:HiddenField ID="hidList" runat="server" />
    </div>
   <br />
   </div>

后面的代码:

 protected void Page_Load(object sender, EventArgs e)
 {


    if (!IsPostBack)
    {
        initialiseCheckBoxList();
        rbtnEntire.Checked = true;
        try
        {
            TreeView1.Attributes.Add("onclick", "javascript: OnTreeClick();");
        }
        catch(Exception)
        {
            Response.Write("Error Occured While onTreeClick");
        }
    }
}
  public void initialiseCheckBoxList()
  {

   CheckBoxList chkBxLst = new CheckBoxList();
   chkBxLst.ID = "chkLstItem";
    chkBxLst.Attributes.Add("onmouseover", "showdiv()");
    DataTable dtListItem = GetListItem();
    int rowNo = dtListItem.Rows.Count;
    string lstValue = string.Empty;
    string lstID = string.Empty;
    for (int i = 0; i < rowNo - 1; i++)
    {
        lstValue = dtListItem.Rows[i]["Value"].ToString();
        lstID = dtListItem.Rows[i]["ID"].ToString();
        chkBxLst.Items.Add(lstValue);
    }
    System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
    div.ID = "divChkList";
    div.Controls.Add(chkBxLst);
    div.Style.Add("border", "black 1px solid");
    div.Style.Add("width", "160px");
    div.Style.Add("height", "130px");
    div.Style.Add("overflow", "AUTO");
    div.Style.Add("display", "block");


   }//end of initialiseCheckBoxList()
  protected void btn_Click(object sender, EventArgs e)
   {
    string x=string.Empty;
    string strSelectedItem = "Selected Items ";
    CheckBoxList chk = (CheckBoxList)phDDLCHK.FindControl("chkLstItem");    // phDDLCHK is placeholder's ID

    for (int i = 0; i < chk.Items.Count; i++)
    {
        if (chk.Items[i].Selected)
        {
            if (strSelectedItem.Length == 0)
            {
                       strSelectedItem = strSelectedItem + ":" + chk.Items[i].Text;

            }
            else
            {
                strSelectedItem = strSelectedItem + ":" + chk.Items[i].Text;
                                }
        }
    }
           lblSelectedItem.Text =strSelectedItem;
  }

  public DataTable GetListItem()  
  {
    DataTable table = new DataTable();
    table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Value", typeof(string));

    for (int icnt = 0; icnt < 10; icnt++)
    {
        table.Rows.Add(icnt, "ListItem"+":"+icnt);
    }
    return table;
}

问题:当我选择单选按钮 rbtnCustom 时,它应该显示 div Custom 以及 CheckboxList 控件,但没有发生。当我不隐藏 div 时,它会显示出来。可以做些什么来显示 checkboxList 控件?这是我的代码,谁能告诉我哪里出错了?任何帮助将不胜感激!谢谢!

4

2 回答 2

0

如何使用 asp 复选框控件作为 RadioButton

首先我们创建一个这样的脚本:

  <script type="text/javascript">
    function check(sender) {
        var chkBox;
        var i;
        var j;
        for (i = 1; i < 6; i++) {
            for (j = 1; j < 6; j++) {
                if (i != j) {
                    if (sender.id == "ck" + i) {
                        chkBox = document.getElementById("ck" + j);
                    }
                    else {
                        chkBox = document.getElementById("ck" + i);
                    }
                    if (sender.checked) {
                        if (chkBox.checked) {
                            chkBox.checked = false;
                        }
                    }
                }
            }
        }
    }
 </script>

现在我们为我们的 ASP CheckBox 控件使用以下代码

    <div>
    <asp:CheckBox ID="ck1" runat="server" Text="P1" onclick="check(this)"/>
    <asp:CheckBox ID="ck2" runat="server" Text="P2" onclick="check(this)"/>
    <asp:CheckBox ID="ck3" runat="server" Text="P3" onclick="check(this)"/>
    <asp:CheckBox ID="ck4" runat="server" Text="P4" onclick="check(this)"/>
    <asp:CheckBox ID="ck5" runat="server" Text="P5" onclick="check(this)"/>
   </div>

谢谢...

于 2013-12-30T06:19:49.687 回答
0

您的某些 Javascript 无法正常工作的原因是您在客户端 (Javascript) 代码中使用了服务器ID。

<asp:RadioButton ID="rbtnCustom" runat="server" Text="Custom" 
        GroupName="s1"/>

由于上述控件设置runat="server"的ID属性是设置服务器端控件ID,所以会生成客户端ID。如果您不需要访问服务器上的此控件,则简单地使用“输入”元素而不是 asp.net 控件可能更容易。另一个选项是设置ClientIDMode="Static"客户端 ID 与服务器 ID 相同。

<asp:RadioButton ID="rbtnCustom" runat="server" Text="Custom" ClientIDMode="Static"
            GroupName="s1"/>

如果您没有在后面的代码中设置 ID 并且您在客户端 Javascript 中使用 ID,请使用此控件进行任何控制。

phDDLCHK.Controls.Add(div);编辑:您在方法结束时也丢失了initialiseCheckBoxList

您也没有提供什么 javascript "OnTreeClick();" 是。它在后面的代码中被引用。据我所知,您只在 initialiseCheckBoxList 上填充自定义复选框列表的内容一次。

于 2012-11-21T05:26:38.153 回答