2012-04-07 41 views
3

我必须定位当我clik链接按钮获取行的索引。但是,我无法得到它。我怎样才能得到行索引,当我点击linkbutton在gridview

我的C#代码:

int rowIndex = Convert.ToInt32(e.CommandArgument); 

当代码来这里给出错误({“输入字符串的不正确的格式。”})然而,当我点击ButtonField字段它为例子。我该怎么做?

asp.net代码

<asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton2" runat="server" CommandName="View"><%#Eval("RSS_Title") %></asp:LinkButton> 
      </ItemTemplate> 

回答

6

我会做这样的事情:

ASPX

<asp:GridView ID="YourGrid" 
       OnRowCommand="YourGrid_RowCommand" 
       OnRowCreated="YourGrid_RowCreated" 
       runat="server"> 
    <Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="LinkButton2" runat="server" CommandName="View"> 
      <%#Eval("RSS_Title") %></asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

CS

protected void YourGrid_RowCommand(Object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName=="View") 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
    } 
} 
protected void YourGrid_RowCreated(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var LinkButton2 = (LinkButton)e.Row.FindControl("LinkButton2"); 
     LinkButton2.CommandArgument = e.Row.RowIndex.ToString(); 
    } 

} 
+0

@ sarvar206的回答解决了我的问题,谢谢 – leventkalay92 2012-04-07 12:09:55

+0

@ sarvar206答案只是为了工作第一行。如果你有10行,行索引仍然是1.这将导致你始终从同一行中选择值。如果那是你想要的,那么就这样做。否则,我的答案会让你在rowcommand中的目标行 – Arion 2012-04-07 12:29:47

+0

是的,它只是假设一个静态值。如果需要动态值,则需要从后面的代码或使用Eval命令设置值。谢谢 – sarwar026 2012-04-07 12:38:17

2

请使用以下命令:

<asp:LinkButton ID="LinkButton2" runat="server" CommandName="View" CommandArgument="1"><%#Eval("RSS_Title") %></asp:LinkButton> 

我的意思是,添加CommandArgument。