我自己是这样做的:
foreach (DataGridItem item in DataGrid1.Items)
{
if(!((CheckBox)item.Cells[1].Controls[0]).Checked)
{
WenJianQiQuan=false;
break;
}
}
但是出现非法转换类型的错误(无法强制转换为CheckBox)

解决方案 »

  1.   

    ((CheckBox)DataGrid1.Item[0].Cells[1].Controls[1]).Checked
      

  2.   

    flyinglz(云溪飘叶) 兄:能否详细解释下,兄弟新手。
    DataGrid.Item[0]是不是应该是DataGrid.Items[0]
    并且这个Items[0]是不是只是第一行。
    为什么要用Controls[1]  Cells[1]中不就一个控件吗?索引不是从0 开始的吗?
    多谢
      

  3.   

    for (i = 0;i< To DataGrid1.Items.Count - 1
    {
        lTxtValue = DataGrid1.Items(lIntCount).Cells(9).FindControl("CheckBox的名字")
    }
    然后再判断就OK了
      

  4.   

    上面语法有点问题,
    for (i = 0;i< To DataGrid1.Items.Count - 1
    {
        lTxtValue = DataGrid1.Items[lIntCount].Cells[列数].FindControl("CheckBox的名字");
    }
      

  5.   

    godblessyU(自由港) 兄:CheckBox是动态生成的 根本找不到他的名字 怎么用FindControl()呢?
    多谢
      

  6.   

    上面语法有点问题,
    for (i = 0;i< To DataGrid1.Items.Count - 1;i++)
    {
        lTxtValue = DataGrid1.Items[lIntCount].Cells[列数].FindControl("CheckBox的名字");
    }
    然后再判断就OK了
      

  7.   

    给checkbox加一个ID
    <asp:CheckBox id="cb1" Runat="server"></asp:CheckBox>事件中这样:
    dim str as string
    dim cb as new checkbox
    cb=e.item.findcontrol(cb1)
    if ch.checked then
        str="是"
     else
        str="否"
    end if
      

  8.   

    godblessyU(自由港) 真是热心人
      

  9.   

    for (i = 0;i< To DataGrid1.Items.Count - 1;i++)
    {
        CheckBox cbx=new CheckBox ;
        cbx=(CheckBox)DataGrid1.Items[lIntCount].Cells[列数].Controls[0];
    }
    你看行不行
      

  10.   

    datagrid控件使用攻略之------checkbox控件  
    作者: zc_net  类型: 原创  发表时间: 2003-11-14 13:50:19  阅读次数: 9  发送短信 
     
       在www.csdn.net呆长了,经常看见有网友提问关于一些模板列的使用或分页.在此.我将我的一些心得写出来供大家参考(声明:我只是一个爱好者,如果写的有不对或有错的地方请原谅,当然我会尽量写好)
    在datagrid控件中我们中选择文章是否推荐,如果该文章推荐,我们就选将checkbox控件上打上勾(就比如本站一些文章的'精'字图像)
    在页面上增加一个datagrid控件并增加个模板列(当然你要在模板列中要有checkbox控件,并在模板列顶部放置一个button按钮,设置该按钮的commandname的命令为jing(注意是在编辑模板列Headertemplate放按钮,Itemtempaate放checkbox)好了之后我们就是在页面加载时绑定数据,当然是使用dataset来绑定数据了.Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If Not IsPostBack Then
           Dim ds As DataSet = New DataSet()
                Dim sqlsele As String = "select * from life"
                adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
                adocmd.Fill(ds, "life")
                DataGrid1.DataSource = ds.Tables.Item(0)
                DataGrid1.DataBind()
                ''''是否为精
                viewstate("tol") = "false"
                chkfind()'''''这里调用函数.主要这是这句
            End If
        End Sub 下面是chkfind()函数的代码,主要是用来检查是否为精(我表中有一字段,jing,整型,如果为1就代表该文章为精,如果不为0就不代表为精了)
    Private Sub chkfind()
            Dim i, j As Integer
            For i = 0 To DataGrid1.Items.Count - 1
     'i是用来显示当前总页总共有几行数据.这样就可以循环查找.判定
    ' j 是用来显示该行的数据在表中是第几行数据,
                j = (DataGrid1.CurrentPageIndex * 10) + i
                Dim ds As DataSet = New DataSet()
                Dim sqlsele As String
                If viewstate("tol") = "false" Then
                    sqlsele = "select * from life"
                Else
                    sqlsele = "select * from life where lifetitle='" & TextBox1.Text & "'"
                End If
                adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
                adocmd.Fill(ds, "life")
                mytable = ds.Tables.Item(0)
                myrow = mytable.Rows.Item(j)
                Dim chk As CheckBox
                chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
                If myrow.Item(8) = 1 Then
                    chk.Checked = True'显示模板列的checkbox是否打上勾
                Else
                    chk.Checked = False
                End If
            Next
        End Sub 下面是datagrid的翻页代码及datagrid事件代码.当然每次翻页后都要重新绑定代码
     Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
    If e.CommandName = "jing" Then'如果按了button按钮,就是我上面所讲的button按钮,如果还不明白请到上面看看
                Dim i, j As Integer
                For i = 0 To DataGrid1.Items.Count - 1
                    j = (DataGrid1.CurrentPageIndex * 10) + i
                    Dim chk As CheckBox
                    chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
                    Dim ds As DataSet = New DataSet()
                    adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
                    adocmd.Fill(ds, "life")
                    mytable = ds.Tables.Item(0)
                    myrow = mytable.Rows.Item(j)
                    mytable.GetChanges()
                    If chk.Checked = True Then'如果为精,更改图像
                        myrow.Item(8) = 1
                        myrow.Item(9) = "icon/jing.gif"
                    Else
                        myrow.Item(8) = 0
                        myrow.Item(9) = "icon/333.gif"
                    End If
                    cmd = New OleDbCommandBuilder(adocmd)
                    adocmd.Update(ds, "life")'更新数据
                Next
                Response.Redirect("adminlife.aspx")
            End If
        End Sub Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
            Dim ds As DataSet = New DataSet()
            Dim sqlsele As String
            If viewstate("tol") = "false" Then
                sqlsele = "select * from life "
            Else
                sqlsele = "select * from life where lifetitle like '%" & TextBox1.Text & "%'"
            End If
            adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
            adocmd.Fill(ds, "life")
            DataGrid1.CurrentPageIndex = e.NewPageIndex
            DataGrid1.DataSource = ds.Tables.Item(0).DefaultView
            DataGrid1.DataBind()
            chkfind()
        End Sub 至此,我们已经完成了我们所想要功能.在此基础上大家都可以扩展相应的功能,谢谢看完!以上代码都已经通过调试有用的(就是本站使用的代码)
    版权所有.未经本人许可.请勿转载.如需转载,请注明来源也算是对本站的支持.谢谢