2011-03-10 61 views
1

這裏通過單擊屬性我如何傳遞一個參數是我的ASP代碼:在一個asp.net控制器

<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中。謝謝

回答

3

<asp:LinkButton>有一個CommandArgument屬性。

大概是這樣的:

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

說法是拼寫錯誤 – 2016-11-17 16:29:55

+0

感謝@nueverest – Hogan 2016-11-17 16:38:43

0

它可以處理LinkBut​​ton的DataBinding事件和自定義設置LinkBut​​ton的CommandArgument等於相應的DataRow的「ID」值。之後,可以處理LinkBut​​ton的Click事件,從發送者對象獲取LinkBut​​ton的實例,並使用其CommandArgument屬性。

1

改變你的LinkBut​​ton的聲明在HTML:

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

然後,您可以通過拉動從按鈕CommandArgument財產在你的命令處理程序方法提取出來。

3

嘗試:

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

然後在你的代碼隱藏你要使用:

int wagerId = ((LinkButton)sender).CommandArgument; 
相關問題