【问题标题】:Checbox inside gridview within updatepanel更新面板中gridview内的复选框
【发布时间】:2014-05-21 11:27:18
【问题描述】:

我有这个代码,

  <asp:UpdatePanel runat="server">
    <ContentTemplate>   
        <asp:GridView ID="gvTestDetails" runat="server" AutoGenerateColumns="false" OnDataBound="gvTestDetails_DataBound" EnableModelValidation="true">    
            <Columns>
                <asp:TemplateField HeaderText="Select">
                    <ItemTemplate>
                        <asp:CheckBox ID="cbSelectRecord" runat="server" AutoPostBack="true"  OnCheckedChanged="cbSelectRecord_CheckedChanged"/>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

我想要的是,当我选中 GridView 行中的一个复选框时,所有其他复选框都未选中。

【问题讨论】:

  • “我有这个”不要发布图片而是代码。
  • Plz 代码,这样我们就可以看到你尝试了什么。
  • 为什么你在服务器端而不是在客户端?
  • @timschmelter ...对此我很抱歉,但我尝试粘贴代码,但代码显示部分显示......所以我只能这样发布......
  • 使用“代码”按钮正确格式化所选代码。

标签: c# asp.net gridview updatepanel


【解决方案1】:

为什么不直接使用 Ajax Controll Toolkit 中的 Mutually Exclusive CheckBox

只需将其添加到您的 CheckBox 下方即可:

<ajaxToolkit:MutuallyExclusiveCheckboxExtender runat="server"
    ID="RandomID"
    TargetControlID="cbSelectRecord" 
    Key="AllwaysSameID" />

注意:你需要在你的项目中包含一个 scriptmanager 和 AjaxControllToolkit。但这还不错,因为 AjaxControllToolkit 提供了很多很棒的东西。

【讨论】:

  • 没问题 :) 很高兴我能帮上忙
【解决方案2】:

您可以循环 CheckedChanged 事件中的所有行并取消选中所有其他行:

protected void cbSelectRecord_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = (CheckBox) sender;
    if(cb.Checked)
    {
        foreach(GridViewRow row in this.gvTestDetails.Rows)
        {
            CheckBox rowRb = (CheckBox) row.FindControl("cbSelectRecord");
            if(rowRb != cb)
              rowCb.Checked = false;
        }
    }
}

【讨论】:

    【解决方案3】:

    使用 JQuery

     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
    </script>
    <script type="text/javascript">
    function checkRecAll() {
    var len = document.forms['form1'].elements.length;
    var fields = document.forms['form1'].elements;
    var chkStatus = document.all("GridView1_chkselall").checked
    for (i = 0; i < len; i++) {
    if ((fields[i].name.indexOf('chkrecords') != -1)||     (fields[i].name.indexOf('chkrecords') != -1)) {
    if (chkStatus == true) {
    if (document.all(fields[i].name).disabled == false) {
    document.all(fields[i].name).checked = true;
    }
    }
    else {
    document.all(fields[i].name).checked = false;
    }
    }
    }
    }
    </script>
    
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:CheckBox name="chkselall" ID="chkselall" runat="server" onclick="javascript:checkRecAll()">
                        </asp:CheckBox>Select All
                    </HeaderTemplate>
                    <ItemTemplate>
                        <asp:CheckBox ID="chkrecords" runat="server"></asp:CheckBox>
                    </ItemTemplate>
                </asp:TemplateField>
                 <asp:BoundField DataField="Name" HeaderText="Name" />
                <asp:BoundField DataField="Age" HeaderText="Age" />
            </Columns>
        </asp:GridView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多