问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何实现gridview中 checkbox 多选限制,最多选择5项。

发布网友 发布时间:2022-04-27 12:22

我来回答

5个回答

懂视网 时间:2022-04-27 16:43

代码如下:
<%@ Page Language="C#" AutoEventWireup="true"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  // 计算数据,完全可以从数据看取得
  ICollection CreateDataSource()
  {
    System.Data.DataTable dt =new System.Data.DataTable();
    System.Data.DataRow dr;
    dt.Columns.Add(new System.Data.DataColumn("序号", typeof(System.String)));
    dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
    dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
    dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

    for (int i =0; i <8; i++)
    {
      System.Random rd =new System.Random(Environment.TickCount * i); ;
      dr = dt.NewRow();
      dr[0] = i.ToString();
      dr[1] ="【孟子】"+ i.ToString();
      dr[2] = System.Math.Round(rd.NextDouble() *100, 2);
      dr[3] = System.Math.Round(rd.NextDouble() *100, 2);
      dr[4] = System.Math.Round(rd.NextDouble() *100, 2);
      dr[5] = System.Math.Round(rd.NextDouble() *100, 2);
      dt.Rows.Add(dr);
    }
    System.Data.DataView dv =new System.Data.DataView(dt);
    return dv;
  }

  protected void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
    {

      GridView2.DataSource = GridView1.DataSource = CreateDataSource();
      GridView2.DataBind();
      GridView1.DataBind();
    }
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    Ret1.Text ="";
    foreach (GridViewRow gvr in GridView1.Rows)
    {
      CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");
      if (ch.Checked)
      {
        Ret1.Text +="<li>GridView1 您选择的是(键值):"+ GridView1.DataKeys[gvr.DataItemIndex].Value.ToString();
      }
    }
  }

  protected void Button2_Click(object sender, EventArgs e)
  {
    Ret2.Text ="";
    foreach (GridViewRow gvr in GridView2.Rows)
    {
      CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");
      if (ch.Checked)
      {
        Ret2.Text +="<li>GridView2 您选择的是(键值):"+ GridView2.DataKeys[gvr.DataItemIndex].Value.ToString();
      }
    }
  }

  protected void CheckAll(object sender, EventArgs e)
  {
    CheckBox cbx = (CheckBox)sender;
    foreach (GridViewRow gvr in GridView1.Rows)
    {
      CheckBox ch = (CheckBox)gvr.FindControl("ItemCheckBox");
      ch.Checked = cbx.Checked;
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>GridView 实现服务器端和客户端全选的两种方法</title>

  <script type="text/javascript">
  //<![CDATA[
  function CheckAll(oCheckbox)
  {
   var GridView2 = document.getElementById("<%=GridView2.ClientID %>");
   for(i =1;i < GridView2.rows.length; i++)
   {
    GridView2.rows[i].cells[0].getElementsByTagName("INPUT")[0].checked = oCheckbox.checked;
   }
  }

  //]]>
  </script>

</head>
<body>
  <form id="Form1" runat="server">
    <table style="width:800px;font-size:12px;">
      <tr valign="top">
        <td>
          <asp:GridView ID="GridView1" runat="server" Font-Size="12px" BackColor="#FFFFFF"
            GridLines="Both" CellPadding="4" DataKeyNames="序号" AutoGenerateColumns="false">
            <HeaderStyle BackColor="#EDEDED" Height="26px"/>
            <Columns>
              <asp:TemplateField>
                <HeaderTemplate>
                  <asp:CheckBox ID="CheckBox1" runat="server" Text="全选" AutoPostBack="true" OnCheckedChanged="CheckAll"/>
                </HeaderTemplate>
                <ItemTemplate>
                  <asp:CheckBox ID="ItemCheckBox" runat="server"/>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:BoundField DataField="学生姓名" HeaderText="学生姓名"/>
              <asp:BoundField DataField="语文" HeaderText="语文"/>
              <asp:BoundField DataField="数学" HeaderText="数学"/>
              <asp:BoundField DataField="英语" HeaderText="英语"/>
              <asp:BoundField DataField="计算机" HeaderText="计算机"/>
            </Columns>
          </asp:GridView>
          <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="得到选择的行值"/>
        </td>
        <td align="right">
          <asp:GridView ID="GridView2" runat="server" Font-Size="12px" BackColor="#FFFFFF"
            GridLines="Both" CellPadding="4" DataKeyNames="序号" AutoGenerateColumns="false">
            <HeaderStyle BackColor="#EDEDED" Height="26px"/>
            <Columns>
              <asp:TemplateField>
                <HeaderTemplate>
                  <input id="Checkbox2" type="checkbox" onclick="CheckAll(this)" runat="server"/><label>全选</label>
                </HeaderTemplate>
                <ItemTemplate>
                  <asp:CheckBox ID="ItemCheckBox" runat="server"/>
                </ItemTemplate>
              </asp:TemplateField>
              <asp:BoundField DataField="学生姓名" HeaderText="学生姓名"/>
              <asp:BoundField DataField="语文" HeaderText="语文"/>
              <asp:BoundField DataField="数学" HeaderText="数学"/>
              <asp:BoundField DataField="英语" HeaderText="英语"/>
              <asp:BoundField DataField="计算机" HeaderText="计算机"/>
            </Columns>
          </asp:GridView>
          <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="得到选择的行值"/>
        </td>
      </tr>
      <tr valign="top">
        <td>
          <asp:Literal ID="Ret1" runat="server"></asp:Literal>
        </td>
        <td align="right">
          <asp:Literal ID="Ret2" runat="server"></asp:Literal>
        </td>
      </tr>
    </table>
  </form>
</body>
</html>

热心网友 时间:2022-04-27 13:51

/*全选*/
function CheckAll()
{
var a = document.getElementsByTagName("input");
for (var i=0; i<a.length; i++)
if (a[i].type == "checkbox")
{
a[i].checked =true;
}
}
/*反选*/
function NoCheckAll()
{
var a = document.getElementsByTagName("input");
for (var i=0; i<a.length; i++)
if (a[i].type == "checkbox")
{
a[i].checked =false;
}
}
/*验证选择个数*/
function CheckIsSelect(objGrid)
{
//检测是否有选择多选框的至少一项
chs = document.getElementById(objGrid).getElementsByTagName("input");
n = 0;
for( i = 0; i<chs.length; i++ )
{
if(chs[i].checked)
{
n++;
}
}
if( n == 0 )
{
alert("至少选择一项!");
return false;
}
return true;
}

改改这个JS就行了

热心网友 时间:2022-04-27 15:09

多选框不是这样用的,如果你要这样,那就只能每选中一个就判断一次

热心网友 时间:2022-04-27 16:44

两种办法:
1、前台用JS判断
2、后台代码判断

热心网友 时间:2022-04-27 18:35

用js控制
js代码:
function validateIsChecked()
{
var gridview1 = document.getElementById("<%=GridView1.ClientID %>");
var chbAudit ;
var checkedCount = 0;
for(var i = 2 ; i < gridview1.rows.length + 1 ; i++)
{
if(i<10)
{
chbAudit = document.getElementById("GridView1$ctl0" + i + "$audit");
}
else
{
chbAudit = document.getElementById("GridView1$ctl" + i + "$audit") != null ? document.getElementById("GridView1$ctl" + i + "$audit"):'null';
}
if(chbAudit.type == "checkbox")
{
if(chbAudit.checked==true)
{
checkedCount++;
}
}
else
{
break;
}
}
if(checkedCount>5)
{
var evt = window.event || evt;
var obj = evt.srcElement || evt.target;
obj.checked = false;
//在这里再遍历一遍gridview 如果checkbox没有被选中就变为不可用
for(var i = 2 ; i < gridview1.rows.length + 1 ; i++)
{
if(i<10)
{
chbAudit = document.getElementById("GridView1$ctl0" + i + "$audit");
}
else
{
chbAudit = document.getElementById("GridView1$ctl" + i + "$audit") != null ? document.getElementById("GridView1$ctl" + i + "$audit"):'null';
}
if(chbAudit.type == "checkbox")
{
if(chbAudit.checked==false)
{
chbAudit.enabled= false
}
}

alert("对不起,最多只能选择5项!");

}
}
注:其中的("GridView1$ctl" + i + "$audit")为每一行CheckBox的客户端id,可以打开浏览器,在页面上点击右键->查看源代码获得。

CheckBox控件代码:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="uname" HeaderText="uname" SortExpression="uname" />
<asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />
<asp:BoundField DataField="date" HeaderText="date" SortExpression="date" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" ID="audit" onclick = "validateIsChecked()" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iPhone XR电量百分比怎么设置 Django如何使用网页嵌套网页(2023年最新解答) 社保之前工作缴了 后面工作不缴。自己要怎么续上?自己缴要缴多少?每... 壁挂炉数字不亮了怎么回事了解壁挂炉数字不亮的原因及解决方法_百度知 ... 单反长镜头和短镜头什么区别 ai的剪切蒙版快捷键是什么 自学当程序员需要哪些基础 程序员,需要学什么课程 想当一名出色的程序员数学必须要很好吗 华为路由器192.168.1.1怎样设置? 用Microsoft PowerPoint画折线统计图 ( )的眼睛(填形容词) 请问“()眼睛”括号里填什么? 什么的眼睛? G6580香港九龙到佛山西,在福田站能上车吗? gridview checkbox实现所有页面全选 oppor9spuls耗电太快了!有解决办法不,用过的发表下你们耗电快吗? oppo r9s plus为什么很耗电 你好,我的oppor9plus在所有程序都关了的情况下,晚上待机消耗15%的电,请问这是什么原因? OPPO R9s plus刷抖音大约两分钟一个电,感觉有点快,正常吗? 9000认证合同丢失 签署合同是否有效到哪里去认证 埃及的合同认证要怎么做,需要哪些相关的东西 认证机构与企业为啥要签订合同 最新的手机QQ带闪照功能的是哪个版本我的为什么更新不出来 求大神告知 我用的苹果6s plus_百度问一问 msds认证合同怎么写 什么是合同认证???在线等 我在天津武清区起的营业执照,现在地址要迁到天津市南开区了,营业地址变更都需要收么手续?时间大概多长 污水处理系统有哪几个方面? 请问大型污水处理厂的初沉池和二沉池是不是基本上都用辐流式的? 贵阳市初二地理生物会考成绩查询 2019年贵州省贵阳市初二会考是按排名算等级还是分数,如果是分数,那多少分是b多少分是a 9月份手机收到不明好多网站验证码,之后微信语音播放失败,请教怎么恢复_百度问一问 莫名收到很多验证码 为什么会有各种短信验证码没完没了的出现,怎么办才能关掉不再出? 怎样消除衣服静电 GridView 全选问题 C# gridview中checkbox2个问题 如何通过工行网上银行查询柜台记账式债券的到期时间? 蒲城县打击黑车非法运营举报电话是多少 蒲城县公安局电话号码是多少 陕西省蒲城县公安局电话多少 蒲城客运中心服务电话 渭南防疫中心24小时电话 包装礼盒造型设计有哪些 红枣的礼盒包装设计 如何在GridView中加上CheckBox的全选功能 谁知道香港消费者委员会的电话号码,非常感谢。 注册地在香港怎么投诉 犯太岁为什么可怕?