http://www.csdn.net/Develop/read_article.asp?id=21585
你还可以看看这个控件不过我已经把它封装成客户端行为这样可以减少和服务器的交互,提高服务器的效率。
http://www.foxhis.com/powermjtest/

解决方案 »

  1.   

    在DataGrid_ItemCreated事件里:
    ................
    CheckBox cb=(CheckBox)e.Item.FindControl("CheckBox1")
    cb.CheckedChanged+=new System.EventHandler (this.asd);
    ..............
    然后:
    private void asd(object sender, System.EventArgs e)
    {
    .............//事件处理代码
    }
      

  2.   

    本来我就是这样写的,但是运行的时候出现(System.NullReferenceException: 未将对象引用设置到对象的实例)的错误。chk.CheckedChanged +=new EventHandler(this.chk_CheckedChanged);
      

  3.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=FF130C7F-3650-4DA6-8943-8AA4AF3E3459
    里面有很详细的源代码
      

  4.   

    那是因为chk没有找到.也就是FindControl那句没有找到控件!
      

  5.   

    写在ItemDataBound事件中if (e.Item.ItemIndex >= 0)
    {
      CheckBox chk = =(CheckBox)e.Item.FindControl("CheckBox1")
      chk.CheckedChanged+=new System.EventHandler (this.asd);
    }
      

  6.   

    千万不要写在ItemDataBound事件中,否则在PostBack的时候没有效果.
      

  7.   

    本来我就是这样写的,但是运行的时候出现(System.NullReferenceException: 未将对象引用设置到对象的实例)的错误。chk.CheckedChanged +=new EventHandler(this.chk_CheckedChanged);
    ====
    这说明
    CheckBox cb=(CheckBox)e.Item.FindControl("CheckBox1");
    这一句没有能够找到正确的CheckBox1对象。
    1、有可能是你的代码问题,例如我建议改成这样:
    CheckBox cb=(CheckBox)e.Item.Cells[x].FindControl("CheckBox1");
    只找特定的Table Cell。
    2、大概你没有判断e.Item.ItemType,连表头和表尾单元格都执行了查找操作。要先做类似判断:if ((e.Item.ItemType == ListItemType.Item)||(e.Item.ItemType == ListItemType.AlternatingItem))
    {
        CheckBox cb=(CheckBox)e.Item.Cells[x].FindControl("CheckBox1");
    }
      

  8.   

    Dim dgItem as DataGridItem 
    for each dgItem in DataGrid1.Items.Controls(0)
        dim chkTmp as CheckBox 
        chkTmp = CType(e.item.findcontrol("ChkID"),Checkbox)
        if chkTmp.Checked = true then 
             '加入你的处理代码
        endifnext
      

  9.   

    好象很多人都问同样的问题,我也问了,可是没人能解决,我用的是radiobutton
      

  10.   

    to huangwangman() ( ) 你试过代码能用么?
      

  11.   

    你会满意的,呵呵!
    http://www.metabuilders.com/Tools/RowSelectorColumn.aspx
      

  12.   

    '在生成表格前,给里面的每一个“审核”按钮写上标记性的话
        Private Sub AuditingDataGrid_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles AuditingDataGrid.ItemCreated
            Select Case e.Item.ItemType
                Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
                  
                    Dim myDeleteButton As LinkButton
                    myDeleteButton = e.Item.FindControl("lnkbtnAuditing")                If myDeleteButton Is Nothing Then
                        '什么也不做(也就是说如果找到的不是这个控件则什么都不做)
                    Else
                        '获取DataGrid的数据源头:可能在刚开始的时候是没有数据源的!
                        Dim tmpDataGridTable As DataTable = _
                             CType(Me.AuditingDataGrid.DataSource, DataTable)                    If tmpDataGridTable Is Nothing Then
                            '这个时候还没有绑定到数据源,可以不做任何操作
                        Else
                            Dim tmpBulletin As BGManage.Bulletin.commBulletin
                            Dim tmpCurEditBulletinID As Integer = _
                                CType(tmpDataGridTable.Rows(e.Item.ItemIndex).Item("ID"), Integer)
                            tmpBulletin = BGManage.Bulletin.commBulletin.Build(tmpCurEditBulletinID)
                            If Not tmpBulletin Is Nothing Then
                                myDeleteButton.ToolTip = "修改标题为 [" & tmpBulletin.Title & "] 的公告的审核状态"
                            Else
                                '这里是系统错误
                            End If
                        End If
                    End If
            End Select
        End Sub
      

  13.   

    你看看上面的一段看看,我在外面,没有地方修改.我在实际用的时候是可以绑定的.
    BGManage.Bulletin.commBulletin是我自己定义的公告类.