0

asp.netグリッドビューにハイパーリンクフィールドがあり、aspxファイルでコードビハインドを実行します。

<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();

しかし、それは機能していません。他のアイデアはありますか?

4

4 に答える 4

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();
  }
}
于 2013-03-12T19:38:01.747 に答える
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();
}
于 2013-03-12T19:47:55.703 に答える
0

.cells.textを使用して、値を取得します。

protected void lblSignup_Click(object sender, EventArgs e)
{
    GridViewRow row = gvCoursesList.rows[e.rowindex]
    string course = row.cells[cellIndex].text;
}
于 2013-03-12T19:37:14.173 に答える
0

codingbizに感謝します。彼の解決策は、以下のように少し調整する必要がありました。

LinkButton btn = sender as LinkButton;
GridViewRow row = btn.NamingContainer as GridViewRow;
string course = row.Cells[0].Text;
于 2013-03-12T20:06:36.547 に答える