2013-03-12 92 views
0

我有,在一個aspx文件背後運行的代碼一個asp.net gridview的超鏈接字段,如獲取行從超鏈接的GridView

<asp:GridView ID="gvCoursesList" runat="server"> 
    <Columns> 
     <asp:BoundField DataField="Course" HeaderText="Course"> 
     </asp:BoundField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="lblSignup" runat="server" Text="Sign Up" OnClick= "lblSignup_Click" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

在隱藏文件我的代碼具有的功能:

protected void lblSignup_Click(object sender, EventArgs e) 
    { 
    } 

如何從此函數檢索第一列的值。 我想這樣做

string course = gvCoursesList.DataKeys[e.RowIndex].Value.ToString(); 

,但它不工作。任何其他想法?

回答

1

@jishnusaha應該是你應該採取的辦法。這裏是另一種替代方案:http://forums.asp.net/p/1137287/1821091.aspx

protected void lblSignup_Click(object sender, EventArgs e) 
{ 
    LinkButton btn = sender as LinkButton; 
    GridViewRow row = btn.NamingContainer as GridViewRow; 

    string course = gvCoursesList.DataKeys[row.RowIndex].Value.ToString(); 
} 
+1

對我來說這幾乎是工作。我只需要將最後一行更改爲:string course = row.Cells [0] .Text;是的,這是絕對的參考,但至少它工作。 – 2013-03-12 20:03:33

0

使用.cells.text來獲取值了:

protected void lblSignup_Click(object sender, EventArgs e) 
{ 
    GridViewRow row = gvCoursesList.rows[e.rowindex] 
    string course = row.cells[cellIndex].text; 
} 
+0

謝謝 - 不太工作。獲取錯誤'System.Web.UI.WebControls.GridView'不包含'Cells'的定義。 – 2013-03-12 19:53:59

+0

編輯,忘記行 – tymeJV 2013-03-12 19:57:12

+0

我很抱歉地說,但:''System.Web.UI.WebControls.GridView'沒有包含'行'的定義。 – 2013-03-12 20:01:35

1
<asp:GridView ID="gvCoursesList" runat="server" OnRowCommand="gvCoursesList_RowCommand"> 
<Columns> 
    <asp:BoundField DataField="Course" HeaderText="Course"> 
    </asp:BoundField> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="lblSignup" runat="server" Text="Sign Up" CommandName="SignUp" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

protected void gvCoursesList_RowCommand(object sender, GridViewRowCommandEventArgs e) 
{ 
    if(e.CommandName=="SignUp") 
    { 
    string course = gvCoursesList.DataKeys[e.RowIndex].Value.ToString(); 
    } 
} 
+0

謝謝。它還沒有工作。它抱怨說「的類型或命名空間名稱‘GridViewRowCommandEventArgs’找不到」 – 2013-03-12 19:48:37

+0

這實際上不是「GridViewCommandEventArgs」 保護無效gvCoursesList_RowCommand(對象發件人,GridViewCommandEventArgs E) { 如果(e.CommandName ==「註冊」) { string course = gvCoursesList.DataKeys [e.RowIndex] .Value.ToString(); } } – 2013-03-13 04:11:12

0

感謝codingbiz。他的解決方案只需要稍微調整一下。

LinkButton btn = sender as LinkButton; 
GridViewRow row = btn.NamingContainer as GridViewRow; 
string course = row.Cells[0].Text;