如何通过asp.net控制器中的OnClick属性传递参数

时间:2011-03-10 19:47:00

标签: c# asp.net

这是我的ASP代码:

<asp:GridView ID="WagerTable" runat="server" AutoGenerateColumns="False" CssClass="basix" >
<columns>
<asp:BoundField DataField="GameName" HeaderText="Game Name" />
<asp:BoundField DataField="Amount" HeaderText="Amount" />
<asp:BoundField DataField="Comment" HeaderText="Comment" />
<asp:BoundField DataField="CreateTime" HeaderText="Create Time" />
    <asp:TemplateField>
      <ItemTemplate>
                    <asp:LinkButton runat="server" Text="Accept" OnClick="AcceptWager" ID="AcceptButton"  />
      </ItemTemplate>
  </asp:TemplateField>
</columns>
</asp:GridView>

这是我背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
    AccountManager accManager = new AccountManager();
    MembershipUser newUser = Membership.GetUser(HttpContext.Current.User.Identity.Name);
    Guid UserId = (Guid)newUser.ProviderUserKey;
    String myConnectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
    SqlDataReader reader;
    using (SqlConnection myConnection = new SqlConnection(myConnectionString))
    {

        myConnection.Open();
        String selectSql = "SELECT * FROM aspnet_Wagers INNER JOIN aspnet_Games ON aspnet_Wagers.GameId = aspnet_Games.GameId";

        SqlCommand myCommand = new SqlCommand(selectSql, myConnection);
        myCommand.Parameters.AddWithValue("@UserId", UserId);


        reader = myCommand.ExecuteReader();

        WagerTable.DataSource = reader;
        WagerTable.DataBind();
        myConnection.Close();
    }



}
protected void AcceptWager()
{

}

我希望能够拥有它,以便每个LinkBut​​ton可以将数据库中的ID作为参数传递给AcceptWager函数,然后我将从那里开始。 ID的sql列是WagerId。它在我执行的查询中返回,因此它已经在reader中。感谢

4 个答案:

答案 0 :(得分:3)

<asp:LinkButton>具有CommandArgument属性。

可能是这样的:

  <asp:LinkButton CommandArgument='<%# DataBinder.Eval(Container.DataItem, "SOME_VALUE")%>' />

答案 1 :(得分:3)

尝试:

<asp:LinkButton runat="server" Text="Accept" OnClick="AcceptWager" ID="AcceptButton" CommandArgument='<%# ((DataRowView)Container.DataItem)["WagerId"]%>' />

然后在您的代码隐藏中,您将要使用:

int wagerId = ((LinkButton)sender).CommandArgument;

答案 2 :(得分:1)

在HTML中更改您的LinkBut​​ton声明:

<asp:LinkButton CommandArgument='<%# ((SqlDataReader)Container.DataItem)["WagerID"] %>'
runat="server" Text="Accept" OnClick="AcceptWager" ID="AcceptButton" />

然后,您可以通过从命令处理程序方法中的按钮中提取CommandArgument属性来提取它。

答案 3 :(得分:0)

可以处理LinkBut​​ton的DataBinding事件并自定义设置LinkBut​​ton的CommandArgument等于相应DataRow的“ID”值。之后,可以处理LinkBut​​ton的Click事件,从sender对象获取LinkBut​​ton的实例,并使用其CommandArgument属性。