C# updatepanel中gridview内的Checbox
我有这个密码C# updatepanel中gridview内的Checbox,c#,asp.net,gridview,updatepanel,C#,Asp.net,Gridview,Updatepanel,我有这个密码 <asp:UpdatePanel runat="server"> <ContentTemplate> <asp:GridView ID="gvTestDetails" runat="server" AutoGenerateColumns="false" OnDataBound="gvTestDetails_DataBound" EnableModelValidation="true">
<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行中的一个复选框时,所有其他复选框都将被取消选中。您可以在
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;
}
}
}
为什么不直接使用Ajax控件工具包中的
只需将其添加到复选框下方:
<ajaxToolkit:MutuallyExclusiveCheckboxExtender runat="server"
ID="RandomID"
TargetControlID="cbSelectRecord"
Key="AllwaysSameID" />
注意:您需要在项目中包含scriptmanager和AjaxControlToolkit。但这并不坏,因为AjaxControlToolkit提供了很多很棒的东西。使用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>
函数checkRecAll(){
var len=document.forms['form1'].elements.length;
变量字段=document.forms['form1'].elements;
var chkStatus=document.all(“GridView1\u chkselall”)。已选中
对于(i=0;i
“我有这个”不要发布图片,而是代码。请输入代码,这样我们就可以看到您的尝试。为什么您在服务器端而不是客户端执行此操作?@timschmelter。。。对此我很抱歉,但我尝试粘贴代码,但代码部分显示..因此我只能这样发布..使用“代码”-按钮正确设置所选代码的格式。没问题:)很高兴我能提供帮助