我有一个asp.net GridView:
<asp:TemplateField HeaderText="View Faktor" ShowHeader="False" Visible="True">
<ItemTemplate>
<asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false"
CommandArgument='<%#(eval("mprID")) %>' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png"
Text="" />
</ItemTemplate>
</asp:TemplateField>
如何在行命令事件中获得rowIndex
?
我希望在select
触发时突出显示(RowCommand
)目标行。
答案 0 :(得分:67)
这是你的问题的答案。
GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int RowIndex = gvr.RowIndex;
答案 1 :(得分:12)
ImageButton \ Button等。
CommandArgument='<%# Container.DataItemIndex%>'
代码后
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = e.CommandArgument;
}
答案 2 :(得分:4)
如果你有一个GridView的内置命令,如插入,更新或删除,在行命令上你可以使用以下代码来获取索引:
int index = Convert.ToInt32(e.CommandArgument);
在自定义命令中,您可以将命令参数设置为yourRow.RowIndex.ToString()
,然后将其返回到RowCommand事件处理程序中。当然,除非你需要命令参数用于其他目的。
答案 3 :(得分:3)
或者,您可以使用control
类而不是其类型:
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
int RowIndex = row.RowIndex;
答案 4 :(得分:1)
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName == "Delete")
{
GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer);
int RemoveAt = gvr.RowIndex;
DataTable dt = new DataTable();
dt = (DataTable)ViewState["Products"];
dt.Rows.RemoveAt(RemoveAt);
dt.AcceptChanges();
ViewState["Products"] = dt;
}
}
catch (Exception ex)
{
throw;
}
}
protected void gvProductsList_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
gvProductsList.DataSource = ViewState["Products"];
gvProductsList.DataBind();
}
catch (Exception ex)
{
}
}
答案 5 :(得分:1)
我能够在我自己的项目中使用@ rahularyansharma的answer,只做了一点修改。我需要在用户单击LinkButton
的行上获取特定单元格的值。可以修改第二行以获得任意数量的单元格值。
这是我的解决方案:
GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
string typecore = gvr.Cells[3].Text.ToString().Trim();