2009-01-21 14 views

cevap

12

yerine satırlar arasında döngü bu

<asp:ImageButton runat="server" id="ibtn1" ... RowIndex='<%# Container.DisplayIndex %>' 
OnClick="button_click"/> 

... 

protected void button_click(object sender, EventArgs e){ 
    ImageButton ibtn1 = sender as ImageButton; 
    int rowIndex = Convert.ToInt32(ibtn1.Attributes["RowIndex"]); 

    //Use this rowIndex in your code 
} 
+0

Tatlı - bu daha verimli - Ben entegre edeceğim. – Jeffrey

+0

Cevabımı buna göre değiştirdim, çünkü bu aslında benim gerçekleştirdiğim çözüme daha yakın. TabIndex değerini ayarlamayı bitirdim ve buna baktım. "RowIndex" i nasıl kullanırsınız? bu özel bir özellik midir? – Jeffrey

+0

Awesome Answer !!! – Eric

2

Bulduğum en kolay yol Command olayını Click olayı üzerinden kullanmak ve öğe kimliğini komut argümanı olarak göndermek.

Ayrıca GridView'de satırların üstesinden gelebilir ve Satırdaki ImageButton'u Click etkinliğinizdeki sender bağımsız değişkeniyle karşılaştırabilirsiniz.

+0

Bunu her zaman GridView bağlamaları ile yapıyorum. Bu harika! –

+1

Çalışıyor ama RowCommand'ın size hangi komutu verdiğinizi söyleyememesi saçma. –

12

bir ImageButton göndermesini Cast kullanabilirsiniz sonra bir satıra görüntü düğmenin NamingContainer dökme:

VB:

Dim btn as ImageButton = CType(sender, ImageButton) 

Dim row as GridViewRow = CType(btn.NamingContainer, GridViewRow) 

C#:

+0

iyi bir çözüm .......... benim için çalıştı –

+0

Tam olarak ne sonra oldu. – zeencat

3

En basit seçeneğin CommandArgument'i kullanmak olduğu konusunda hemfikir olurdum. Verilerinizin benzersiz kimlik numarasını o mülke bağlayın, ardından _RowCommand olayını işleyin. Örneğin

:

<asp:TemplateField > 
    <HeaderStyle Width="20" /> 
    <ItemTemplate> 
     <asp:ImageButton ImageUrl="images/icons/iCal.png" CommandArgument='<%# Eval("Event_ID") %>' ToolTip="iCal" runat="server" Height="18" Width="18" /> 
    </ItemTemplate> 
</asp:TemplateField> 


Protected Sub gv_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gv.RowCommand 

    e.CommandArgument 'use this value in whatever way you like 

End Sub 
2

Bu çok iyi bir hile. Ayrıca başka bir numaram var. Sen O da iyi bir yöntem var ...

protected void userGridview_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Select") 
     { 
      GridViewRow rowSelect = (GridViewRow)(((Button)e.CommandSource).NamingContainer); 
      int rowindex = rowSelect.RowIndex; 
     } 
    } 

deneyebilirsiniz.

İlgili konular