2012-07-24 9 views
5

Próbuję przekazać wartość CustomerID dla kodu behind, z mojego elementu LinkButton w formancie gridview. Próbowałem rozwiązania sugerowanego here, ale to nie działa.Przekazywanie wartości identyfikatora do zdarzenia po stronie serwera LinkButton w kontrolce gridview

Mój kod GridView jest:

<asp:TemplateField HeaderText="Last Name, First Name"> 
    <ItemTemplate> 
     <asp:LinkButton OnClick="EditCustomer" id="lbtnCustomerName" CommandName="CustomerName" Visible="true" runat="server" ToolTip="Click to edit customer."><%# DataBinder.Eval(Container.DataItem, "custLastName") + ", " + DataBinder.Eval(Container.DataItem, "custFirstName" + ", " + DataBinder.Eval(Container.DataItem, "custID")%></asp:LinkButton> 
    </ItemTemplate> 
</asp:TemplateField> 


protected void EditCustomer(Object sender, EventArgs e) 
{ 

} 

Jak mogę uzyskać wartość custid w przypadku EditCustomer?

+0

nie byłoby po prostu 'sender.id'? –

Odpowiedz

10

Youc przekazać CustomerID jak CommandArgument:

<asp:LinkButton OnClick="EditCustomer" id="lbtnCustomerName" 
    CommandArgument='<%#Eval("CustomerID")%>' 
    CommandName="CustomerName" 
    OnCommand="LinkButton_Command" 
    Visible="true" runat="server" 
    ToolTip="Click to edit customer."><%# DataBinder.Eval(Container.DataItem, "custLastName") + ", " + DataBinder.Eval(Container.DataItem, "custFirstName" + ", " + DataBinder.Eval(Container.DataItem, "custID")%> 
</asp:LinkButton> 

Teraz można obsługiwać LinkButton na Command event:

void LinkButton_Command(Object sender, CommandEventArgs e) 
{ 
    String CustomerID = e.CommandArgument.ToString(); 
} 
+0

Dzięki Tim. Jak wyglądałby kod? Otrzymuję komunikat "Brak przeciążenia dla" EditCustomer "pasuje do delegata" System.EventHandler "" – DotNetRookie

+0

@DotNetRookie: Edytowałem moją odpowiedź, aby pokazać, w jaki sposób obchodzić się z wydaniem polecenia LinkButton. –

+0

Bardzo dziękuję @Tim – DotNetRookie

Powiązane problemy