模版列里添加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; }
}
在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; }
}
但是怎么才能在datagrid里面加入复选框或者单选框呢
{
'在这个事件中我用这种方法成功捕获到
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;
}
}
上面的两种方法都行得通,因为控件中的 CommandName 也包括了子控件的CommandName,想象的和实际做的不同,呵呵
我在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默认)
if(cb.Checked)
{
Label1.text="true";
}
else
{
Label1.text="false";
}