用户
 找回密码
 立即注册

13

主题

26

帖子

362

积分

中级会员

Rank: 3Rank: 3

积分
362
发表于 2019-5-11 16:55:11
请问: GridView控件如何统计勾选的行数(如何循环取值),谢谢!
使用道具 举报 回复
这里有个listview 的你可以参考思路:借助list来存储勾选项,listview中的行项每勾选一个就往list插入一条记录,取消勾选则从list中移除记录,当list.Count与listview的行数相同是则表示全部选择
listview放在SmobilerForm.cs中
  1. List<string> selectItem = new List<string>();//通过这个list来记录已勾选的数据行id

  2.           /// <summary>
  3.         /// 添加勾选项
  4.         /// </summary>
  5.         /// <param name="item"></param>
  6.         public void AddSelectItem(string item)
  7.         {
  8.             if (!selectItem.Contains(item))
  9.                 selectItem.Add(item);
  10.         }
  11.         /// <summary>
  12.         /// 取消选择
  13.         /// </summary>
  14.         /// <param name="item"></param>
  15.         public void RemoveSelectItem(string item)
  16.         {
  17.             if (selectItem.Contains(item))
  18.                 selectItem.Remove(item);
  19.         }
  20.         /// <summary>
  21.         /// 改变checkbox状态
  22.         /// </summary>
  23.         public void changeState()
  24.         {
  25.             if (selectItem.Count == listView1.Rows.Count)//selectItem的数量和listview.Rows的数量一致表示全选
  26.                 checkBox1.Checked = true;
  27.             else
  28.                 checkBox1.Checked = false;
  29.         }
  30.         /// <summary>
  31.         /// checkbox点击事件
  32.         /// </summary>
  33.         /// <param name="sender"></param>
  34.         /// <param name="e"></param>
  35.         private void checkBox1_CheckedChanged(object sender, EventArgs e)
  36.         {
  37.             if (checkBox1.Checked)
  38.             {
  39.                 foreach (ListViewRow row in listView1.Rows)//遍历listview.Rows
  40.                 {
  41.                     //(SmobilerUserControl1)row.Control即listview行模板
  42.                     ((SmobilerUserControl1)row.Control).checkBox1.Checked = true;//改变listview模板里中的checkbox值
  43.                     AddSelectItem(((SmobilerUserControl1)row.Control).checkBox1.BindDataValue.ToString());//获取模板类中的checkbox的DataMember
  44.                 }

  45.             }
  46.             else
  47.             {
  48.                 foreach (ListViewRow row in listView1.Rows)
  49.                 {
  50.                     ((SmobilerUserControl1)row.Control).checkBox1.Checked = false;
  51.                     RemoveSelectItem(((SmobilerUserControl1)row.Control).checkBox1.BindDataValue.ToString());
  52.                 }
  53.             }
复制代码

listview的,模板类为SmobilerUserControl1.cs模板类使用(SmobilerForm1)this.Form来调用SmobilerForm1的属性、方法,将数据传给SMobilerForm1

  1. private void checkBox1_CheckedChanged(object sender, EventArgs e)
  2.         {
  3.             SmobilerForm1 frm = (SmobilerForm1)this.Form;//获取listview所在窗体
  4.             if (checkBox1.Checked)
  5.             {
  6.                 frm.AddSelectItem(checkBox1.BindDataValue.ToString());
  7.             }
  8.             else
  9.             {
  10.                 frm.RemoveSelectItem(checkBox1.BindDataValue.ToString());
  11.             }

  12.             frm.changeState();
  13.         }
复制代码


使用道具 举报 回复 支持 反对
发表于 2019-5-13 20:25:13
已解决,谢谢!
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册