C# 2005 里如何在datagridview中做chckbox是否被选中

时间:2022-03-13 09:00:43
我想做一个全选.反选请各位高手帮下忙.小弟我急死了......

42 个解决方案

#1


用一个循环嘛

#2


大哥.我是个新手.请帮下忙.我都找不到这个checkbox
不知道如何来做.

#3


就是找不到这个复选框的值.不知道它是否被选中.

#4


((checkBox)(datagridview.rows[1].cell[1])).check == false/true。。。
具体全选的话,你就触发全选事件的时候再把在循环中把所有的checkbox=true,反之为false

#5


            foreach (DataGridViewRow dr in this.dataGridView1.Rows)
            {
                (bool)dr.Cells[0].Value = true;
            }
试一下

我没有作具体的试验,你可以用这个方法试一下,应该可以

#6


注意 数据源是什么

#7



girdview.rows.count
girdview.rows.findcontrol(复选框名字)
可以用一个循环实现.

#8


各位大哥.能不能弄具体一点儿.谢谢了...
因为我想做一个全选和反选来进行删除.
但是做了很久一直没有做出来.

#9


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView_CheckBoxColumn.aspx.cs" Inherits="GridSamples_GridView_CheckBoxColumn" %>

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
       <title>无标题页</title>
       <script language="javascript" type="text/javascript">
       function selectAll(obj)
       {
           var theTable     = obj.parentElement.parentElement.parentElement;
           var i;
           var j = obj.parentElement.cellIndex;
        
           for(i=0;i<theTable.rows.length;i++)
           {
               var objCheckBox = theTable.rows[i].cells[j].firstChild;
               if(objCheckBox.checked!=null)objCheckBox.checked = obj.checked;
           }
       }
       </script>
</head>
<body>
       <form id="form1" runat="server">
       <div>
           <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
               DataKeyNames="id" DataSourceID="AccessDataSource1" AllowSorting="True" OnDataBinding="GridView1_DataBinding" OnRowDataBound="GridView1_RowDataBound">
               <Columns>
                   <asp:TemplateField>
                       <ItemTemplate>
                           <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" Text='<%#DataBinder.Eval(Container.DataItem,"id") %>' />
                       </ItemTemplate>
                       <HeaderTemplate>
                           &nbsp;<input id="CheckAll" type="checkbox" onclick="selectAll(this);" />本页全选
                       </HeaderTemplate>
                   </asp:TemplateField>
                   <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                       SortExpression="id" />
                   <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                   <asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />
                   <asp:BoundField DataField="deptid" HeaderText="deptid" SortExpression="deptid" />
               </Columns>
           </asp:GridView>
           &nbsp;
      
           <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/test.mdb"
               SelectCommand="SELECT [id], [name], [sex], [deptid] FROM [employees]"></asp:AccessDataSource>
           <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ShowAllSelectedItem" />
           <asp:TextBox ID="TextBox1" runat="server" Width="200px" ReadOnly="True"></asp:TextBox></div>
       </form>
</body>
</html>

#10


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class GridSamples_GridView_CheckBoxColumn : System.Web.UI.Page
{
       /// <summary>
       /// 获取或设置选中项的集合
       /// </summary>
       protected ArrayList SelectedItems
       {
           get
           {
               return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
           }
           set
           {
               ViewState["mySelectedItems"] = value;
           }
       }

       protected void Page_Load(object sender, EventArgs e)
       {
        
       }


       protected void GridView1_DataBinding(object sender, EventArgs e)
       {
           //在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
           CollectSelected();
       }

    
       protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
       {
           //这里的处理是为了回显之前选中的情况
           if (e.Row.RowIndex > -1 && this.SelectedItems!=null)
           {
               DataRowView row = e.Row.DataItem as DataRowView;
               CheckBox cb = e.Row.FindControl("CheckBox1") as CheckBox;
               if(this.SelectedItems.Contains(row["id"].ToString()))
                   cb.Checked = true;
               else
                   cb.Checked = false;
           }
       }
       /// <summary>
       /// 从当前页收集选中项的情况
       /// </summary>
       protected void CollectSelected()
       {
           ArrayList selectedItems = null;
           if (this.SelectedItems == null)
               selectedItems = new ArrayList();
           else
               selectedItems = this.SelectedItems;

           for (int i = 0; i < this.GridView1.Rows.Count; i++)
           {
               string id = this.GridView1.Rows[i].Cells[1].Text;
               CheckBox cb = this.GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
               if (selectedItems.Contains(id) && !cb.Checked)
                   selectedItems.Remove(id);
               if (!selectedItems.Contains(id) && cb.Checked)
                   selectedItems.Add(id);
           }
           this.SelectedItems = selectedItems;
       }

       protected void Button1_Click(object sender, EventArgs e)
       {
           //最后,需要对选中项进行操作之前,不能忘了还要最后一次收集当前页的选中情况
           CollectSelected();

           this.TextBox1.Text = string.Empty;
           foreach (object tmp in this.SelectedItems)
               this.TextBox1.Text += tmp.ToString() + ",";
       }

#11


for(int i=0;i<this.dg.rows.count;i++)
{
    ((checkbox)(this.dg.rows[i].cell[1].text)).checkd == true //全选
}

领会精神 

#12


我是想在C#里做.不是asp里.

#13


不知道在C#里怎么来找这个checkbox.ASP里到好做一些.可是现在就是做不出来.不知道从做着手了.
人都晕了.

#14


首先要一个事件来相应你后台的方法,来遍历datagridview获取每行的checkbox

#15


大哥!我就是不知道怎么弄了.人都晕了..麻烦明白一些!!!

#16


你可以用DataTable进行绑定,在dataGridView中进行更改是不需要进行判断的.
在保存的时候直接保存DataTable 声明的dt就可以了.

#17


//全选复选框状态改变的事件
private void chkChooseAll_CheckedChanged(object sender, EventArgs e)
{
    foreach (ListViewItem item in lsvSubject.Items) {
        item.Checked = chkChooseAll.Checked;//每一项状态都与全选复选框状态相同
    }
}
这是我做过的一个全选复选框的例子,不过是用的ListView,参照着改改就行了。

#18


老大!我找不到这个checked这个事件...所以不知道怎么做呀...
因为这个checkbox是在datagridview中添加的列...
所以先要找这个checkbox这个东东...

#19


 function CheckAll()
    {
         var Collection=document.getElementsByName("ChangeState");
         var CheckAll=document.getElementById("ChkAll");
         for(var i=0;i<Collection.length;i++)
         {
            Collection[i].checked=CheckAll.checked;
         }
    }


<asp:GridView ID="UserList" runat="server" Width=800px AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="UserList_PageIndexChanging" PageSize="20" 
                  SelectedRowStyle-CssClass="datagridSelectedItem" RowStyle-CssClass="datagridItem" HeaderStyle-CssClass="datagridHeader">
                        <RowStyle HorizontalAlign="Center" CssClass="datagridItem"/>
                        <Columns>
                        <asp:TemplateField HeaderText="用户名"> 
                        <ItemTemplate>
                        <div id="oprator<%# DataBinder.Eval(Container.DataItem, "UserID")%>" onmouseover="LookUpInfo(oprator<%# DataBinder.Eval(Container.DataItem, "UserID")%>)"  onmouseout="hidden()" title="<%# DataBinder.Eval(Container.DataItem, "UserID")%>"><%# DataBinder.Eval(Container.DataItem, "LoginName")%></div>
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="角  色"> 
                        <ItemTemplate>
                        <a title="点击修改该用户角色" href="#"  style="cursor:hand" onclick="window.open('UserRole.aspx?UserID=<%# DataBinder.Eval(Container.DataItem, "UserID") %>&RoleType=1','null','height=200,width=300,status=no,toolbar=no,menubar=no,location=no')"><%# DataBinder.Eval(Container.DataItem, "Name") %></a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="上  级"> 
                        <ItemTemplate>
                        &nbsp;<%#GetParentInfo(int.Parse(DataBinder.Eval(Container.DataItem, "ParentID").ToString()))%>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="下  级"> 
                        <ItemTemplate>
                        &nbsp;<a href="SubUsersList.aspx?ParentID=<%# DataBinder.Eval(Container.DataItem, "UserID")%>" title="下级人员资料">查看</a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>           
                        
                        
                         <asp:TemplateField HeaderText="帐户余额"> 
                        <ItemTemplate>
                        &nbsp;<%# DataBinder.Eval(Container.DataItem, "AccountFee")%>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField> 
                        
                         <asp:TemplateField HeaderText="安全状态"> 
                        <ItemTemplate>
                        &nbsp;<A title="<%#(DataBinder.Eval(Container.DataItem, "SafeState").ToString())=="0"?"未绑定":"已绑定CPU,网卡,硬盘" %>"><%# (DataBinder.Eval(Container.DataItem, "SafeState").ToString())=="0"?"<font color='red'>未绑定</font>":"<font color='blue'>已绑定</font>"%></A>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>   
                        
                        <asp:TemplateField HeaderText="密码重置"> 
                        <ItemTemplate>
                        <a  href="PasswordReset.aspx?UserID=<%# DataBinder.Eval(Container.DataItem, "UserID")%>" title="重置">重置</a>
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>  
                        
                         <asp:TemplateField HeaderText="帐户状态"> 
                        <ItemTemplate>
                        <a href="UserList.aspx?flag=<%# DataBinder.Eval(Container.DataItem, "UserID")%>"><%# Boolean.Parse((DataBinder.Eval(Container.DataItem, "IsForbid").ToString())) == false ? "<font color='blue'>正常</font>" : "<font color='Red'>禁用</font>"%></a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                        <asp:TemplateField HeaderText="状态更改"> 
                        <ItemTemplate>
                        &nbsp;<input id="ChangeState" name="ChangeState" type="checkbox" value='<%# DataBinder.Eval(Container.DataItem, "UserID")%>' />
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField> 
                        </Columns>
                    <PagerSettings Mode="NextPrevious" NextPageText="下一页" PreviousPageText="上一页" />
                    <SelectedRowStyle CssClass="datagridSelectedItem" />
                    <HeaderStyle CssClass="datagridHeader" />
                    </asp:GridView>
                </td>
                </tr>
               <tr id="update" runat="server">
                        <td align="right">选择全部<input id="ChkAll" name="ChkAll" onclick="CheckAll()" type="checkbox" /><asp:Button ID="BtnModify" runat="server" Text="状态修改" OnClick="BtnModify_Click" CssClass="ManagerButton" /></td>
                      </tr>
                </table>    

#20


function ChkAllorNot()
{
    var objChk;
    objChk = document.getElementById("ckbCheckAll");
    if (objChk.checked==true)
    {
    for (var i = 0; i < document.form1.elements.length; i++) 
    {
    theelement = document.form1.elements[i];
    if (theelement.type == 'checkbox')
    {
        if (theelement != document.getElementById("ckbCheckAll"))
        {
            if (theelement.disabled==false)
            {
            theelement.checked= true;
        }    
    }    
    }
    }
}   
else
{
    for (var i = 0; i < document.form1.elements.length; i++) 
    {
    theelement = document.form1.elements[i];
    if (theelement.type == 'checkbox')
    {
        if (theelement != document.getElementById("ckbCheckAll"))
        {
            if (theelement.disabled==false)
            {
            theelement.checked= false;
        }    
    }    
    }
    }

}



這是寫在前台的方法,只需要在后太注冊就可以了!
ckbCheckAll.Attributes.Add("onclick", "ChkAllorNot()")

#21


你直接判断checkbox列的每个单元格的value是否等于1就行了,选中为1,没选中就为0。
同样,你也可以用1或者0去赋值,checkbox列就会变为选中或者不选中。

#22


各位老大些....是在C#里!
我做的是窗口程序...不是ASP...
那个checkbox是在datagridview中添加的列....
现在是要在datagridview中先找到复选框才可以进行操作........ C# 2005 里如何在datagridview中做chckbox是否被选中

#23


这个简单,.不就全选吗  是不是这样子 是的话 你发个邮件到我邮箱 我发源码给你
C# 2005 里如何在datagridview中做chckbox是否被选中

#24


你要的是WinFrom下的还是WebForm下的?

#25


winfrom的  窗口程序...
不是做网页
是C# 2005中 datagridview 中加的checkbox列

#26



            for (int i = 0; i < dgMovie.Rows.Count; i++)
            {
                if (dgMovie.Rows[i].Cells["列名或索引"].Value as bool)
                {
                    dgMovie.Rows[i].Cells["列名或索引"].Value = false;
                }
                else
                {
                    dgMovie.Rows[i].Cells["列名或索引"].Value = true;
                }
            }

这是反选

#27


晕,上面的dgMovie时某datagridview,嘿嘿,忘记说了

#28


as boll 那儿要报错......

#29


as bool 那儿有报错......
不过你的答案我觉得已经快要成功了....但是总觉得还差一些什么东东...
大家帮下忙.....

#30


报错是不是未将对象引用设置到对象实例?
因为这个dgMovie.Rows[i].Cells["列名或索引"].Value 的value有可能时null,这个处理一下好了,比如

if(value == null)
{
dgMovie.Rows[i].Cells["列名或索引"].Value = false;
}

#31


放在全部选中的事件里...
foreach(DataGridItem item in this.dgMaterialList.Items)
{
       System.Web.UI.HtmlControls.HtmlInputCheckBox chk=(System.Web.UI.HtmlControls.HtmlInputCheckBox)item.Cells[0].Controls[0];
    chk.Checked = true;
}

#32


 不是ASP.NET 现在做的窗口程序.....
winfrom的     窗口程序... 
不是做网页 
是C#   2005中   datagridview   中加的checkbox列


大哥些...帮下忙....



#33


<script language="javascript" event="onclick" for="chkAll">
var allInput = document.getElementsByTagName("input");
//alert(allInput.length);
var lang = allInput.length;

for(i=0;i<lang;i++)
{
//alert(i);
if(document.Form1.chkAll.checked == true)
{
//alert(allInput[i].type);
if(allInput[i].type == "checkbox")
{
allInput[i].checked = true;
}
}
else
{
if(allInput[i].type == "checkbox")
{
allInput[i].checked = false;
}
}
}
</script>

#34


 不是ASP.NET   现在做的窗口程序..... 
winfrom的           窗口程序...   
不是做网页   
是C#       2005中       datagridview       中加的checkbox列 


大哥些...帮下忙.... 

#35


哥们问题解决了没?
我给你个全选和全不选的代码,不知道能不能满足你的要求,我的代码就是在datagridview中加一列复选框(这列复选框是在datagridview中添加列里边加的datagridviewcheckboxcolumn索引为0,也就是在datagridview的第一列),然后可以控制他们是否全选和全不选:
         private void btnSelectAll_Click(object sender, EventArgs e)
        {
            //把datagridview的所有记录的第一列的复选框设为选中
            for (int i = 0; i < dataGridView.Rows.Count; i++)
            {
                this.dataGridView.Rows[i].Cells[0].Value = true;
            }
        }

        private void btnCancelAll_Click(object sender, EventArgs e)
        {
            //把datagridview的所有记录的第一列的复选框设为不选
            for (int i = 0; i < datagridview.Rows.Count; i++)
            {
                this.datagridview.Rows[i].Cells[0].Value = false;
            }
        }
        //提交当前复选框的选择状态,复选框选或不选要提交下
        private void dataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            this.dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
//哥们要是符合你的需求的话,把分给了啊,哥们我穷死拉!:)

#36


判断某条记录是否被选中:
if(dataGridView.Rows.Cuount!=0)//当前的记录不为空
{
   for(int i=0;i<dataGridView.Rows.Count;i++)
   {
     if(dataGridView.Rows[i].Cell[0].EditedFormattedValue.ToString()=="True")//或者=="False"
     {
        //处理代码
     }
   }
}

#37


兄弟.你太好了....反选呢?

#38


你进入你那个帖子后,点“管理帖子”按钮,进入帖子管理界面,找到我给你回复的那楼也就是35和36楼,有个得分的输入框,在里边输入分数,然后上边有个密码输入框,点结帖就行了,领导在呢,不方便qq,呵呵!

#39


俺是新手,也用到这个,呵呵,学学~~~~

#40


我想问一下36楼的哥们儿啊,你的那个全选和反选是设置了两个按钮吧。可不可以只设置一个按钮,并且让按钮上面的字在全选和不全选之间切换啊。急啊,谢谢啊

#41


我已经知道了
 if (num == 0)
            {
                //     把datagridview的所有记录的第一列的复选框设为选中 
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    this.dataGridView1.Rows[i].Cells[0].Value = 1;

                }
                num = 1;
                btnAll.Text = "取消全选";
            }
            else
            {
                //     把datagridview的所有记录的第一列的复选框设为不选 
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    this.dataGridView1.Rows[i].Cells[0].Value = 0;

                }
                num = 0;
                btnAll.Text = "全选";
            }

#42


老贴,现在看到依旧可以感受到 老鸟们的热情,顶!

#1


用一个循环嘛

#2


大哥.我是个新手.请帮下忙.我都找不到这个checkbox
不知道如何来做.

#3


就是找不到这个复选框的值.不知道它是否被选中.

#4


((checkBox)(datagridview.rows[1].cell[1])).check == false/true。。。
具体全选的话,你就触发全选事件的时候再把在循环中把所有的checkbox=true,反之为false

#5


            foreach (DataGridViewRow dr in this.dataGridView1.Rows)
            {
                (bool)dr.Cells[0].Value = true;
            }
试一下

我没有作具体的试验,你可以用这个方法试一下,应该可以

#6


注意 数据源是什么

#7



girdview.rows.count
girdview.rows.findcontrol(复选框名字)
可以用一个循环实现.

#8


各位大哥.能不能弄具体一点儿.谢谢了...
因为我想做一个全选和反选来进行删除.
但是做了很久一直没有做出来.

#9


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView_CheckBoxColumn.aspx.cs" Inherits="GridSamples_GridView_CheckBoxColumn" %>

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
       <title>无标题页</title>
       <script language="javascript" type="text/javascript">
       function selectAll(obj)
       {
           var theTable     = obj.parentElement.parentElement.parentElement;
           var i;
           var j = obj.parentElement.cellIndex;
        
           for(i=0;i<theTable.rows.length;i++)
           {
               var objCheckBox = theTable.rows[i].cells[j].firstChild;
               if(objCheckBox.checked!=null)objCheckBox.checked = obj.checked;
           }
       }
       </script>
</head>
<body>
       <form id="form1" runat="server">
       <div>
           <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
               DataKeyNames="id" DataSourceID="AccessDataSource1" AllowSorting="True" OnDataBinding="GridView1_DataBinding" OnRowDataBound="GridView1_RowDataBound">
               <Columns>
                   <asp:TemplateField>
                       <ItemTemplate>
                           <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" Text='<%#DataBinder.Eval(Container.DataItem,"id") %>' />
                       </ItemTemplate>
                       <HeaderTemplate>
                           &nbsp;<input id="CheckAll" type="checkbox" onclick="selectAll(this);" />本页全选
                       </HeaderTemplate>
                   </asp:TemplateField>
                   <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
                       SortExpression="id" />
                   <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                   <asp:BoundField DataField="sex" HeaderText="sex" SortExpression="sex" />
                   <asp:BoundField DataField="deptid" HeaderText="deptid" SortExpression="deptid" />
               </Columns>
           </asp:GridView>
           &nbsp;
      
           <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/App_Data/test.mdb"
               SelectCommand="SELECT [id], [name], [sex], [deptid] FROM [employees]"></asp:AccessDataSource>
           <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="ShowAllSelectedItem" />
           <asp:TextBox ID="TextBox1" runat="server" Width="200px" ReadOnly="True"></asp:TextBox></div>
       </form>
</body>
</html>

#10


using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class GridSamples_GridView_CheckBoxColumn : System.Web.UI.Page
{
       /// <summary>
       /// 获取或设置选中项的集合
       /// </summary>
       protected ArrayList SelectedItems
       {
           get
           {
               return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
           }
           set
           {
               ViewState["mySelectedItems"] = value;
           }
       }

       protected void Page_Load(object sender, EventArgs e)
       {
        
       }


       protected void GridView1_DataBinding(object sender, EventArgs e)
       {
           //在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
           CollectSelected();
       }

    
       protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
       {
           //这里的处理是为了回显之前选中的情况
           if (e.Row.RowIndex > -1 && this.SelectedItems!=null)
           {
               DataRowView row = e.Row.DataItem as DataRowView;
               CheckBox cb = e.Row.FindControl("CheckBox1") as CheckBox;
               if(this.SelectedItems.Contains(row["id"].ToString()))
                   cb.Checked = true;
               else
                   cb.Checked = false;
           }
       }
       /// <summary>
       /// 从当前页收集选中项的情况
       /// </summary>
       protected void CollectSelected()
       {
           ArrayList selectedItems = null;
           if (this.SelectedItems == null)
               selectedItems = new ArrayList();
           else
               selectedItems = this.SelectedItems;

           for (int i = 0; i < this.GridView1.Rows.Count; i++)
           {
               string id = this.GridView1.Rows[i].Cells[1].Text;
               CheckBox cb = this.GridView1.Rows[i].FindControl("CheckBox1") as CheckBox;
               if (selectedItems.Contains(id) && !cb.Checked)
                   selectedItems.Remove(id);
               if (!selectedItems.Contains(id) && cb.Checked)
                   selectedItems.Add(id);
           }
           this.SelectedItems = selectedItems;
       }

       protected void Button1_Click(object sender, EventArgs e)
       {
           //最后,需要对选中项进行操作之前,不能忘了还要最后一次收集当前页的选中情况
           CollectSelected();

           this.TextBox1.Text = string.Empty;
           foreach (object tmp in this.SelectedItems)
               this.TextBox1.Text += tmp.ToString() + ",";
       }

#11


for(int i=0;i<this.dg.rows.count;i++)
{
    ((checkbox)(this.dg.rows[i].cell[1].text)).checkd == true //全选
}

领会精神 

#12


我是想在C#里做.不是asp里.

#13


不知道在C#里怎么来找这个checkbox.ASP里到好做一些.可是现在就是做不出来.不知道从做着手了.
人都晕了.

#14


首先要一个事件来相应你后台的方法,来遍历datagridview获取每行的checkbox

#15


大哥!我就是不知道怎么弄了.人都晕了..麻烦明白一些!!!

#16


你可以用DataTable进行绑定,在dataGridView中进行更改是不需要进行判断的.
在保存的时候直接保存DataTable 声明的dt就可以了.

#17


//全选复选框状态改变的事件
private void chkChooseAll_CheckedChanged(object sender, EventArgs e)
{
    foreach (ListViewItem item in lsvSubject.Items) {
        item.Checked = chkChooseAll.Checked;//每一项状态都与全选复选框状态相同
    }
}
这是我做过的一个全选复选框的例子,不过是用的ListView,参照着改改就行了。

#18


老大!我找不到这个checked这个事件...所以不知道怎么做呀...
因为这个checkbox是在datagridview中添加的列...
所以先要找这个checkbox这个东东...

#19


 function CheckAll()
    {
         var Collection=document.getElementsByName("ChangeState");
         var CheckAll=document.getElementById("ChkAll");
         for(var i=0;i<Collection.length;i++)
         {
            Collection[i].checked=CheckAll.checked;
         }
    }


<asp:GridView ID="UserList" runat="server" Width=800px AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="UserList_PageIndexChanging" PageSize="20" 
                  SelectedRowStyle-CssClass="datagridSelectedItem" RowStyle-CssClass="datagridItem" HeaderStyle-CssClass="datagridHeader">
                        <RowStyle HorizontalAlign="Center" CssClass="datagridItem"/>
                        <Columns>
                        <asp:TemplateField HeaderText="用户名"> 
                        <ItemTemplate>
                        <div id="oprator<%# DataBinder.Eval(Container.DataItem, "UserID")%>" onmouseover="LookUpInfo(oprator<%# DataBinder.Eval(Container.DataItem, "UserID")%>)"  onmouseout="hidden()" title="<%# DataBinder.Eval(Container.DataItem, "UserID")%>"><%# DataBinder.Eval(Container.DataItem, "LoginName")%></div>
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="角  色"> 
                        <ItemTemplate>
                        <a title="点击修改该用户角色" href="#"  style="cursor:hand" onclick="window.open('UserRole.aspx?UserID=<%# DataBinder.Eval(Container.DataItem, "UserID") %>&RoleType=1','null','height=200,width=300,status=no,toolbar=no,menubar=no,location=no')"><%# DataBinder.Eval(Container.DataItem, "Name") %></a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="上  级"> 
                        <ItemTemplate>
                        &nbsp;<%#GetParentInfo(int.Parse(DataBinder.Eval(Container.DataItem, "ParentID").ToString()))%>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                         <asp:TemplateField HeaderText="下  级"> 
                        <ItemTemplate>
                        &nbsp;<a href="SubUsersList.aspx?ParentID=<%# DataBinder.Eval(Container.DataItem, "UserID")%>" title="下级人员资料">查看</a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>           
                        
                        
                         <asp:TemplateField HeaderText="帐户余额"> 
                        <ItemTemplate>
                        &nbsp;<%# DataBinder.Eval(Container.DataItem, "AccountFee")%>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField> 
                        
                         <asp:TemplateField HeaderText="安全状态"> 
                        <ItemTemplate>
                        &nbsp;<A title="<%#(DataBinder.Eval(Container.DataItem, "SafeState").ToString())=="0"?"未绑定":"已绑定CPU,网卡,硬盘" %>"><%# (DataBinder.Eval(Container.DataItem, "SafeState").ToString())=="0"?"<font color='red'>未绑定</font>":"<font color='blue'>已绑定</font>"%></A>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>   
                        
                        <asp:TemplateField HeaderText="密码重置"> 
                        <ItemTemplate>
                        <a  href="PasswordReset.aspx?UserID=<%# DataBinder.Eval(Container.DataItem, "UserID")%>" title="重置">重置</a>
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>  
                        
                         <asp:TemplateField HeaderText="帐户状态"> 
                        <ItemTemplate>
                        <a href="UserList.aspx?flag=<%# DataBinder.Eval(Container.DataItem, "UserID")%>"><%# Boolean.Parse((DataBinder.Eval(Container.DataItem, "IsForbid").ToString())) == false ? "<font color='blue'>正常</font>" : "<font color='Red'>禁用</font>"%></a>
                        </ItemTemplate> 
                             <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField>
                        
                        <asp:TemplateField HeaderText="状态更改"> 
                        <ItemTemplate>
                        &nbsp;<input id="ChangeState" name="ChangeState" type="checkbox" value='<%# DataBinder.Eval(Container.DataItem, "UserID")%>' />
                        </ItemTemplate> 
                            <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                        </asp:TemplateField> 
                        </Columns>
                    <PagerSettings Mode="NextPrevious" NextPageText="下一页" PreviousPageText="上一页" />
                    <SelectedRowStyle CssClass="datagridSelectedItem" />
                    <HeaderStyle CssClass="datagridHeader" />
                    </asp:GridView>
                </td>
                </tr>
               <tr id="update" runat="server">
                        <td align="right">选择全部<input id="ChkAll" name="ChkAll" onclick="CheckAll()" type="checkbox" /><asp:Button ID="BtnModify" runat="server" Text="状态修改" OnClick="BtnModify_Click" CssClass="ManagerButton" /></td>
                      </tr>
                </table>    

#20


function ChkAllorNot()
{
    var objChk;
    objChk = document.getElementById("ckbCheckAll");
    if (objChk.checked==true)
    {
    for (var i = 0; i < document.form1.elements.length; i++) 
    {
    theelement = document.form1.elements[i];
    if (theelement.type == 'checkbox')
    {
        if (theelement != document.getElementById("ckbCheckAll"))
        {
            if (theelement.disabled==false)
            {
            theelement.checked= true;
        }    
    }    
    }
    }
}   
else
{
    for (var i = 0; i < document.form1.elements.length; i++) 
    {
    theelement = document.form1.elements[i];
    if (theelement.type == 'checkbox')
    {
        if (theelement != document.getElementById("ckbCheckAll"))
        {
            if (theelement.disabled==false)
            {
            theelement.checked= false;
        }    
    }    
    }
    }

}



這是寫在前台的方法,只需要在后太注冊就可以了!
ckbCheckAll.Attributes.Add("onclick", "ChkAllorNot()")

#21


你直接判断checkbox列的每个单元格的value是否等于1就行了,选中为1,没选中就为0。
同样,你也可以用1或者0去赋值,checkbox列就会变为选中或者不选中。

#22


各位老大些....是在C#里!
我做的是窗口程序...不是ASP...
那个checkbox是在datagridview中添加的列....
现在是要在datagridview中先找到复选框才可以进行操作........ C# 2005 里如何在datagridview中做chckbox是否被选中

#23


这个简单,.不就全选吗  是不是这样子 是的话 你发个邮件到我邮箱 我发源码给你
C# 2005 里如何在datagridview中做chckbox是否被选中

#24


你要的是WinFrom下的还是WebForm下的?

#25


winfrom的  窗口程序...
不是做网页
是C# 2005中 datagridview 中加的checkbox列

#26



            for (int i = 0; i < dgMovie.Rows.Count; i++)
            {
                if (dgMovie.Rows[i].Cells["列名或索引"].Value as bool)
                {
                    dgMovie.Rows[i].Cells["列名或索引"].Value = false;
                }
                else
                {
                    dgMovie.Rows[i].Cells["列名或索引"].Value = true;
                }
            }

这是反选

#27


晕,上面的dgMovie时某datagridview,嘿嘿,忘记说了

#28


as boll 那儿要报错......

#29


as bool 那儿有报错......
不过你的答案我觉得已经快要成功了....但是总觉得还差一些什么东东...
大家帮下忙.....

#30


报错是不是未将对象引用设置到对象实例?
因为这个dgMovie.Rows[i].Cells["列名或索引"].Value 的value有可能时null,这个处理一下好了,比如

if(value == null)
{
dgMovie.Rows[i].Cells["列名或索引"].Value = false;
}

#31


放在全部选中的事件里...
foreach(DataGridItem item in this.dgMaterialList.Items)
{
       System.Web.UI.HtmlControls.HtmlInputCheckBox chk=(System.Web.UI.HtmlControls.HtmlInputCheckBox)item.Cells[0].Controls[0];
    chk.Checked = true;
}

#32


 不是ASP.NET 现在做的窗口程序.....
winfrom的     窗口程序... 
不是做网页 
是C#   2005中   datagridview   中加的checkbox列


大哥些...帮下忙....



#33


<script language="javascript" event="onclick" for="chkAll">
var allInput = document.getElementsByTagName("input");
//alert(allInput.length);
var lang = allInput.length;

for(i=0;i<lang;i++)
{
//alert(i);
if(document.Form1.chkAll.checked == true)
{
//alert(allInput[i].type);
if(allInput[i].type == "checkbox")
{
allInput[i].checked = true;
}
}
else
{
if(allInput[i].type == "checkbox")
{
allInput[i].checked = false;
}
}
}
</script>

#34


 不是ASP.NET   现在做的窗口程序..... 
winfrom的           窗口程序...   
不是做网页   
是C#       2005中       datagridview       中加的checkbox列 


大哥些...帮下忙.... 

#35


哥们问题解决了没?
我给你个全选和全不选的代码,不知道能不能满足你的要求,我的代码就是在datagridview中加一列复选框(这列复选框是在datagridview中添加列里边加的datagridviewcheckboxcolumn索引为0,也就是在datagridview的第一列),然后可以控制他们是否全选和全不选:
         private void btnSelectAll_Click(object sender, EventArgs e)
        {
            //把datagridview的所有记录的第一列的复选框设为选中
            for (int i = 0; i < dataGridView.Rows.Count; i++)
            {
                this.dataGridView.Rows[i].Cells[0].Value = true;
            }
        }

        private void btnCancelAll_Click(object sender, EventArgs e)
        {
            //把datagridview的所有记录的第一列的复选框设为不选
            for (int i = 0; i < datagridview.Rows.Count; i++)
            {
                this.datagridview.Rows[i].Cells[0].Value = false;
            }
        }
        //提交当前复选框的选择状态,复选框选或不选要提交下
        private void dataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            this.dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
//哥们要是符合你的需求的话,把分给了啊,哥们我穷死拉!:)

#36


判断某条记录是否被选中:
if(dataGridView.Rows.Cuount!=0)//当前的记录不为空
{
   for(int i=0;i<dataGridView.Rows.Count;i++)
   {
     if(dataGridView.Rows[i].Cell[0].EditedFormattedValue.ToString()=="True")//或者=="False"
     {
        //处理代码
     }
   }
}

#37


兄弟.你太好了....反选呢?

#38


你进入你那个帖子后,点“管理帖子”按钮,进入帖子管理界面,找到我给你回复的那楼也就是35和36楼,有个得分的输入框,在里边输入分数,然后上边有个密码输入框,点结帖就行了,领导在呢,不方便qq,呵呵!

#39


俺是新手,也用到这个,呵呵,学学~~~~

#40


我想问一下36楼的哥们儿啊,你的那个全选和反选是设置了两个按钮吧。可不可以只设置一个按钮,并且让按钮上面的字在全选和不全选之间切换啊。急啊,谢谢啊

#41


我已经知道了
 if (num == 0)
            {
                //     把datagridview的所有记录的第一列的复选框设为选中 
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    this.dataGridView1.Rows[i].Cells[0].Value = 1;

                }
                num = 1;
                btnAll.Text = "取消全选";
            }
            else
            {
                //     把datagridview的所有记录的第一列的复选框设为不选 
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    this.dataGridView1.Rows[i].Cells[0].Value = 0;

                }
                num = 0;
                btnAll.Text = "全选";
            }

#42


老贴,现在看到依旧可以感受到 老鸟们的热情,顶!