मैं एक सुविधा को कार्यान्वित कर रहा हूं कि जब उपयोगकर्ता ग्रिड व्यू में पंक्ति में किसी भी बिंदु पर दबाता है तो पंक्ति का चयन करें बटन के बजाय चुना जाएगा।चयन बटन के बिना ग्रिड व्यू में पूर्ण पंक्ति का चयन कैसे करें?
कि लागू करने के लिए, मैं निम्नलिखित कोड का उपयोग कर रहा:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Set the hand mouse cursor for the selected row.
e.Row.Attributes.Add("OnMouseOver", "this.style.cursor = 'hand';");
// The seelctButton exists for ensuring the selection functionality
// and bind it with the appropriate event hanlder.
LinkButton selectButton = new LinkButton()
{
CommandName = "Select",
Text = e.Row.Cells[0].Text
};
e.Row.Cells[0].Controls.Add(selectButton);
e.Row.Attributes["OnClick"] =
Page.ClientScript.GetPostBackClientHyperlink(selectButton, "");
}
}
ऊपर कोड के साथ
, निम्नलिखित समस्याएं हैं:
- यह ठीक ही अगर काम करता है पृष्ठ के लिए
EnableEventValidation
false
पर सेट है। SelectedIndexChanged
केवलGrid.DataBind()
को पृष्ठ के लिएPage_Load
में पोस्ट किया गया है (प्रत्येक पोस्टबैक में)।
क्या मैं कुछ गलत कर रहा हूं? क्या कोई बेहतर कार्यान्वयन है?
संपादित करें: EnableEventValidation
true
पर सेट होने पर, निम्न त्रुटि दिखाई देगा:
अमान्य पोस्टबैक या कॉलबैक तर्क। इवेंट सत्यापन को कॉन्फ़िगरेशन या <% @ पृष्ठ सक्षम करें EventValidation = "true"%> पृष्ठ में सक्षम किया गया है। सुरक्षा उद्देश्यों के लिए, यह सुविधा सत्यापित करती है कि पोस्टबैक या कॉलबैक ईवेंट के तर्क मूल रूप से उन्हें प्रदान किए गए सर्वर नियंत्रण से उत्पन्न होते हैं। यदि डेटा मान्य और अपेक्षित है, तो सत्यापन के लिए पोस्टबैक या कॉलबैक डेटा पंजीकृत करने के लिए क्लाइंटस्क्रिप्ट प्रबंधक। रजिस्ट्रारफॉरवेन्ट वैलिडेशन विधि का उपयोग करें।
यह 'EnableEventValidation' को गलत पर सेट करने की समस्या का समाधान नहीं करता है। –
@ टिम: मैंने सवाल संपादित किया, कृपया इसे जांचें। – Homam
@ होमाम: क्या आपने मेरा कोड इस्तेमाल किया है और आपको अभी भी "अमान्य पोस्टबैक/कॉलबैक तर्क" मिल रहा है? मैं अपनी परियोजना में इस त्रुटि को पुन: पेश नहीं कर सकता, लेकिन इसके लिए एक और कारण हो सकता है। मेरे पास अब और जांच करने के लिए समय नहीं है। आप इसे रोकने के लिए [ClientScriptManager.RegisterForEventValidation] (http://msdn.microsoft.com/en-us/library/ms223397.aspx) का उपयोग कर सकते हैं। शायद [यह लिंक] (http://www.codeproject.com/KB/webforms/DoubleClickGridviewRow.aspx) मदद करता है। –