模版列里添加imagebutton控件,设置其commandname属性
在datagrid的itemcommand里捕捉它<asp:TemplateColumn HeaderText="分配权限">
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
<ItemTemplate>
<FONT face="宋体">
<asp:ImageButton id="ImageButton1" runat="server" CommandName="Image" ImageUrl="images/1.gif"></asp:ImageButton></FONT>
</ItemTemplate>
</asp:TemplateColumn>private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch (e.CommandName)
{
case "Image":
                                     //code here
                                     break; }
}

解决方案 »

  1.   

    这个可以实现了
    但是怎么才能在datagrid里面加入复选框或者单选框呢
      

  2.   

    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    '在这个事件中我用这种方法成功捕获到
    if (e.Item.FindControl("ImageButton1") != null )
        {
    Response.Write ("执行代码");
         }
    else
         {
    Response.Write ("没找到");
         }
    而这种方法不成功,因为 e.CommandName 是人为的为产生该事件的控件所定义的命令名,所以它发映的不是 ImageButton 控件,而楼上例子中甚至没有给DataGrid 设置CommandName ,所以代码中的e.CommandName 必定为空字符,下面的代码也处理不到DataGrid中的 ImageButton 控件
    switch (e.CommandName  )
    {
            '根本没有执行
    case "Image":
    //code here
    Response.Write ("呵呵呵呵呵呵");
    break;
    }
    }
      

  3.   

    ^_^,不好意思,更正一下
    上面的两种方法都行得通,因为控件中的 CommandName 也包括了子控件的CommandName,想象的和实际做的不同,呵呵
      

  4.   

    不是我的反应不够,而是确实不是很好实现
    我在DataGrid中加入了莫板列,显示两个复选框
    但由于是服务端的控件,使用
    CheckBox cb;
    cb=(CheckBox)DataGrid1.item[1].cell[1].control[1];
    if cb.Checked
       Label1.text="true";
    else
       Label1.text="false"都是读不出是否选择复选矿的(注control[1]不能为control[0],control[0]为DataGrid默认)
      

  5.   

    用DataGrid1.Items(i).FindControl("name")
      

  6.   

    CheckBox cb=(CheckBox)DataGrid1.Items[1].FindControl("CheckBox_ID");
    if(cb.Checked)
    {
    Label1.text="true";
    }
    else
    {
    Label1.text="false";
    }