2011-06-09 14 views
17

प्राप्त करने के लिए लिंक बटन पर क्लिक करते समय एस्प्रिडव्यू की चयनित पंक्ति प्राप्त करना मैं एस्प्रिडव्यू में शीर्षक डेटा के साथ बाध्यकारी लिंक बटन और आईडी मान रखने वाले छिपे हुए लेबल को बाध्यकारी भी कर रहा हूं। जब उपयोगकर्ता इस लिंक बटन पर क्लिक करता है तो मैं आईडी मान तक पहुंच बनाना चाहता हूं। मुझे इसकी आवश्यकता है क्योंकि, यदि उपयोगकर्ता लॉग इन करता है तो केवल विवरण के लिए लॉगिन करने के लिए मैं केवल पॉपअप विवरण विंडो और चेतावनी संदेश पॉपअप करता हूं।छिपी हुई आईडी मान

lnkTitle_Click() ईवेंट में मैं लेबल नियंत्रण खोजने के लिए चयनित पंक्ति तक पहुंचने का प्रयास कर रहा हूं।

GridViewRow grdSelRow = GridView1.SelectedRow; 
Label lblID = (Label)grdSelRow.FindControl("lblID"); 

लेकिन मुझे grdSelRow शून्य के रूप में मिल रहा है।

ग्रिडव्यू के लिंकबटन पर क्लिक करते समय चयनित पंक्ति कैसे प्राप्त करें?

उत्तर

24

समस्या यह है कि जब आप ग्रिड व्यू में एक बटन पर क्लिक करते हैं, तो पंक्ति केवल एक क्लिक की गई पंक्ति होगी और SelectedRow नहीं होगी। यदि आप इसे चयनित पंक्ति बनाना चाहते हैं तो आपको बटन के मार्कअप में CommandName="Select" निर्दिष्ट करना होगा।

आपकी आवश्यकता को पूरा करने के लिए यहां दो विधियां हैं।

तारों अप ItemTemplate

अंदर LinkButton के लिए एक onclick घटना

मार्कअप

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" runat="server" 
        Text="Click1" 
        OnClick="LinkButton1_Click"/> 
    </ItemTemplate> 
</asp:TemplateField> 

कोड-पीछे

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow; 
    Label lblID = (Label)clickedRow.FindControl("lblID"); 
} 

LinkButton क्लिक पकड़ने के लिए RowCommand का उपयोग करना।

मार्कअप

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton2" runat="server" 
        Text="Click2" 
        CommandName="MyCustomCommand"/> 
    </ItemTemplate> 
</asp:TemplateField> 

कोड-पीछे

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName.Equals("MyCustomCommand")) 
    { 
     GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow; 
     Label lblID = (Label)clickedRow.FindControl("lblID"); 
    } 
} 
+1

धन्यवाद नवीन। यह इस तरह से काम कर रहा है। – NMM

+1

+1 @Naveen निर्दिष्ट करने के लिए "यदि आप इसे चयनित पंक्ति बनाना चाहते हैं तो आपको बटन के मार्कअप में कमांडनाम =" चयन करें "निर्दिष्ट करना होगा" – Rama

+0

@Naveen ग्रिडव्यू के मामले में जावास्क्रिप्ट पुष्टिकरण दिखाने से पहले आप चयन कैसे चिह्नित करते हैं? अगर मैं पुष्टि में रद्द करने पर क्लिक करता हूं तो मुझे वर्तमान पंक्ति चयनित नहीं दिखाई देता है और न ही मैं पुष्टि पंक्ति को देखता हूं इससे पहले कि मैं पुष्टिकरण पॉपअप दिखाता हूं। – Rama

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