1.RowCommand中取行号
可以有两种实现方法
(1)前台绑定。
<asp:TemplateField ItemStyle-HorizontalAlign="center" ItemStyle-Width="80px">
<ItemTemplate>
<asp:Button ID="freezeButton" Text="冻结" runat="server" CommandName="freeze" CommandArgument='<%# DataBinder.Eval(Container,"RowIndex") %>' BorderStyle="Groove" OnClientClick="javascript:return confirm('确定?');" />
</ItemTemplate>
</asp:TemplateField>
为了显示好看可以用<asp:LinkButton.../>代替<asp:Button.../>
或用
CommandArgument='<%# Container.DataItemIndex %>' (2)后台绑定
在girdview的RowDataBound事件中
//绑定时,将行号绑定到 button 上。
LinkButton bt = new LinkButton();
bt = (LinkButton)e.Row.Cells[7].FindControl("btnLZ");
bt.CommandArgument = e.Row.RowIndex.ToString();
使用时:
protected void grdMember_RowCommand(object sender, GridViewCommandEventArgs e)
{
//取INdex
int index = Convert.ToInt32(e.CommandArgument);
DataKey key = grdMember.DataKeys[index];
string tt = key.Value.ToString();
//判断哪个按钮
//switch (e.CommandName.ToString())
//{
// case "DD":
// DoSomething();
// break;
// case "LZ":
// DoSomethingElse();
// break;
//}
}
都是将Index绑定到Button的CommandArgument上
2. 多个ButtonField实现多种选择
有时候仅有一个SelectButton不能满足需求,但又不能添加多个SelectButton,解决办法:用多个ButtonField实现.
前台代码:
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="btnLZ" runat="server" CausesValidation="false" CommandName="LZ"
Text="离职"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="btnDD" runat="server" CausesValidation="false" CommandName="DD"
Text="调动"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>重要的是CommandName=""
下面就可以在Girdview的RowCommand控件中判断是按的是哪个按钮了
protected void grdMember_RowCommand(object sender, GridViewCommandEventArgs e)
{
//取INdex
//int index = Convert.ToInt32(e.CommandArgument);
//DataKey key = grdMember.DataKeys[index];
//string tt = key.Value.ToString();
//判断哪个按钮
switch (e.CommandName.ToString())
{
case "DD":
DoSomething();
break;
case "LZ":
DoSomethingElse();
break;
}
}
最终效果:


浙公网安备 33010602011771号