2009-01-21 16 views
5

पर क्लिक करें मेरे पास टेम्पलेटफील्ड के माध्यम से कॉलम में जोड़े गए ImageButtons के साथ एक ग्रिडव्यू है। मैंने "ऑनक्लिक" ईवेंट में एक फ़ंक्शन संलग्न किया है।किसी छविबटन से पंक्ति अनुक्रमणिका प्राप्त करना ग्रिड व्यू

एक बार इस समारोह में, मैं उस पंक्ति का सूचकांक कैसे प्राप्त कर सकता हूं जिसमें क्लिक किया गया बटन है। ऐसा प्रतीत होता है कि मेरे पास पृष्ठ पर माउस निर्देशांक हैं।

उत्तर

12

इसके बजाय पंक्तियों के माध्यम से पाशन की आप का उपयोग इस

<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

मीठे - यह अधिक कुशल है - मैं इसे एकीकृत कर दूंगा। – Jeffrey

+0

इस पर मेरा जवाब बदलना, क्योंकि यह वास्तव में लागू किए गए समाधान के करीब है। मैंने टैबइंडेक्स मान सेट अप करना समाप्त कर दिया, और उस पर ध्यान दिया। आप "रोइंडेक्स" का उपयोग कैसे करते हैं? क्या यह एक कस्टम विशेषता है? – Jeffrey

+0

बहुत बढ़िया उत्तर !!! – Eric

2

मैंने पाया है कि सबसे आसान तरीका Command ईवेंट Click ईवेंट पर ईवेंट का उपयोग करना है, और आइटम आईडी को कमांड तर्क के रूप में भेजें।

आप ग्रिड व्यू में पंक्तियों पर भी लूप कर सकते हैं और पंक्ति में छविबटन की तुलना अपने क्लिक ईवेंट में sender तर्क से कर सकते हैं।

+0

मैं यह हर समय ग्रिड व्यू बाइंडिंग के साथ करता हूं। यह बहुत अच्छा है! –

+1

यह काम करता है लेकिन यह बेतुका है कि रोकॉमैंड आपको यह नहीं बता सकता कि किस पंक्ति ने कमांड को निकाल दिया। –

12

एक ImageButton को इस कास्ट कर सकते हैं तो एक पंक्ति करने के लिए छवि बटन के NamingContainer डाली:

वीबी:

Dim btn as ImageButton = CType(sender, ImageButton) 

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

सी #:

ImageButton btn = (ImageButton)sender; 

GridViewRow row = (GridViewRow)btn.NamingContainer; 
+0

अच्छा समाधान .......... मेरे लिए काम किया –

+0

वास्तव में मैं क्या कर रहा था। – zeencat

3

bdukes से सहमत होगा कि कमांड ऑर्गेमेंट का उपयोग करने का सबसे आसान विकल्प है। उस डेटा में अपने डेटा का अद्वितीय आईडी नंबर बाध्य करें, फिर _RowCommand ईवेंट को संभाल लें।

उदाहरण के लिए:

<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

यह बहुत अच्छा चाल है। मेरे पास एक और चाल है। आप इसे करने की कोशिश कर सकते हैं ...

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

यह एक भी अच्छा तरीका है।

संबंधित मुद्दे