2009-05-13 11 views
12

पर ListView पर डेटा बाध्य होने के लिए मेरे पास एक सूची दृश्य नियंत्रण है और मैंने डेटाबाउंड ईवेंट जोड़ा है (यह पता नहीं है कि यह सही है या नहीं)।डेटाबाउंड ईवेंट

मैं इस घटना से उस विशेष आइटम टेम्पलेट से जुड़े डेटा तक पहुंचने के लिए इच्छित हूं, क्या यह संभव है?

उत्तर

19

सी # समाधान

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{   
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     // you would use your actual data item type here, not "object" 
     object o = (object)dataItem.DataItem; 
    } 
} 

क्यों वे यह इतना ListView के लिए अलग किए थे, वे एक तरह से मुझे पहेली। यद्यपि एक कारण होना चाहिए।

+0

के लिए जांच करनी चाहिए, ठीक है जॉर्ज के लिए धन्यवाद। –

1

एक समाधान मिला, मैं डेटा मैं कैसे की जरूरत फ़ॉर्मेट करने के लिए एक विधि बनाया है और का उपयोग कर मार्कअप से यह कहा जाता है:

<%# doFormatting(Convert.ToInt32(Eval("Points")))%> 
+1

मुझे यह समाधान आइटमडेटाबाउंड ईवेंट पर पकड़ने से बेहतर लगता है। एकमात्र सुझाव यह है कि आपकी विधि 'doFormatting' के भीतर आपको' शून्य 'या 'DBNull' –

3

एक छोटी सी देर हो गई, लेकिन मुझे लगता है मैं के रूप में, आपके प्रश्न का उत्तर देने की कोशिश करेंगे एक ही समस्या थी और एक समाधान मिला। आप एक ListViewDataItem को ListViewItemEventArgs की मद संपत्ति कास्ट करने के लिए है, और फिर आप इस तरह उस वस्तु की DataItem संपत्ति का उपयोग कर सकते,:

Private Sub listView_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles productsList.ItemDataBound 
    If e.Item.ItemType = ListViewItemType.DataItem Then 
     Dim dataItem As Object = DirectCast(e.Item, ListViewDataItem).DataItem 
    ... 
End Sub 

फिर आप जो कुछ भी प्रकार अपने बाध्य वस्तु थी को DataItem वस्तु डाली सकता है। यह दोहराव वाले काम की तरह अन्य डाटाबेस नियंत्रण से अलग है, जहां DataItem डेटाबाउंड विधि के लिए तर्क पर एक संपत्ति है।

0

वर्तमान आइटम के लिए उपयोग किया जाने वाला डेटा EventArgs से पाया जा सकता है।

तो RepeaterItemEventArgs e से हम e.Item.DataItem पर देखकर वर्तमान आइटम तक पहुंच सकते हैं।

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{   
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     var currentItem = e.Item.DataItem; 
    } 
} 
संबंधित मुद्दे