2012-02-27 19 views
8

डेटा ग्रिडव्यू वेबcontrol से बाध्य होने के बाद मैं एक पंक्ति में एक ऑनक्लिक ईवेंट जोड़ने का प्रयास कर रहा हूं। नीचे दिया गया कोड कोई भी विशेषता नहीं जोड़ रहा है (पेज बनने के बाद व्यूअरसोर्स की जांच की गई) और, ज़ाहिर है, कोई कार्यक्षमता नहीं जोड़ा गया है। अभी, मुझे अभी पृष्ठ पर ऑनक्लिक प्रिंटिंग मिल गई है, लेकिन आखिरकार यह दूसरे पेज से लिंक होगी। क्या गलत है पर कोई विचार?एएसपी.नेट ग्रिडव्यू पंक्ति ऑनक्लिक

इसके अलावा, बड़े पैमाने पर स्टैक ओवरफ्लो समुदाय के लिए धन्यवाद। यह समुदाय हमेशा एक महान मदद रहा है। इस सप्ताह के अंत में कुछ पदों के माध्यम से जाने की योजना बनाएं और प्रश्नों का उत्तर देना शुरू करें क्योंकि मैं थोड़ा सा वापस दे सकता हूं।

सी # सर्वर साइड

protected void dataTbl_RowDataBound(GridViewRowEventArgs e){ 
      e.Row.Attributes.Add("id",e.Row.Cells[0].Text); 
      e.Row.Attributes.Add("onclick", "rowClick('"+e.Row.RowIndex+"')"); 

     } 

जावास्क्रिप्ट क्लाइंट साइड

function rowClicked(counter){ 
    document.write(counter); 
} 

उत्तर

9

मैं मेरे GridView की RowDataBound में यह उपयोग कर रहा हूँ, विशेषता जोड़ने के लिए पंक्ति का चयन करने के लिए:

protected void grvSearch_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    try 
    { 
     switch (e.Row.RowType) 
     { 
      case DataControlRowType.Header: 
       //... 
       break; 
      case DataControlRowType.DataRow: 
       e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#93A3B0'; this.style.color='White'; this.style.cursor='pointer'"); 
       if (e.Row.RowState == DataControlRowState.Alternate) 
       { 
        e.Row.Attributes.Add("onmouseout", String.Format("this.style.color='Black';this.style.backgroundColor='{0}';", grvSearch.AlternatingRowStyle.BackColor.ToKnownColor())); 
       } 
       else 
       { 
        e.Row.Attributes.Add("onmouseout", String.Format("this.style.color='Black';this.style.backgroundColor='{0}';", grvSearch.RowStyle.BackColor.ToKnownColor())); 
       } 
       e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(grvSearch, "Select$" + e.Row.RowIndex.ToString())); 
       break; 
     } 
    } 
    catch 
    { 
     //...throw 
    } 
} 

और जब कोई उपयोगकर्ता पंक्ति पर क्लिक करता है तो यह घटना को पकड़ने के लिए:

protected void grvSearch_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     //Do wherever you want with grvSearch.SelectedIndex     
    } 
    catch 
    { 
     //...throw 
    } 
} 
+0

ऐसा लगता है कि आप ऑनक्लिक ईवेंट सर्वर-साइड का उपयोग कर रहे हैं। मैं अपने ऑनक्लिक घटना के साथ एक जावास्क्रिप्ट विधि को जोड़ रहा हूं। हालांकि पहली समस्या यह है कि यह डेटा बाइंड पर विशेषताओं को भी जोड़ता नहीं है, और मेरा मानना ​​है कि मैं उसी विधि का उपयोग कर रहा हूं। क्या आपने मेरी विधि और आपके बीच कोई अंतर देखा? – steventnorris

+0

हां, यह एक सर्वर-साइड ऑनक्लिक है। यदि आपको जावास्क्रिप्ट ऑनक्लिक की आवश्यकता है, तो मैं आपको अपना ईवेंट (RowDataBound) सत्यापित करने का सुझाव देता हूं। आपके ग्रिड व्यू में ईवेंट है? कुछ 'कोड'grv.RowDataBound + = dataTbl_RowDataBound 'code' की तरह कुछ? 'क्योंकि दोनों विधियां बहुत समान हैं। –

+0

... मुझे बहुत मूर्ख लगता है। स्पष्ट इंगित करने के लिए धन्यवाद। अगर घटना को ऐसा करने के बारे में भी पता नहीं है तो एक विधि को कॉल करना मुश्किल है। – steventnorris

3

jQuery में ऐसा करने के लिए, बस इस तरह पंक्ति क्लिक करें घटना मिलती है:

$(document).ready(function() { 
    var clickCnt = 0; 
    $('table tr').click(function(){ 
     clickCnt++; 
     //Do something 
    }); 
}); 
इसी के साथ

, मैं उस में प्रदर्शित होता है ऑब्जेक्ट के लिए प्राथमिक कुंजी को टी.आर. आईडी निर्धारित करने की अनुशंसा झगड़ा।

3

dataTbl_RowDataBound ईवेंट पर कॉल करने के लिए सेट है? यदि आप उस घटना में ब्रेकपॉइंट के साथ डीबग करते हैं, तो क्या यह घटना निकाल दी जाती है?

+0

और छोटी गलतियों की मूर्खता बनाई गई है। मुझे अपने इवेंट कॉल में कोई समस्या थी। धन्यवाद। – steventnorris

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