2013-04-24 7 views
6

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

तो मैं एक समाधान की तलाश में हूं जो उपयोगकर्ता को सॉर्ट किए जाने के बाद भी उपयोगकर्ता को अगले आइटम पर जाने की अनुमति देता है। मेरे पास वर्तमान में कोड (केवल ए कुंजी के लिए) नीचे है:

if (e.KeyCode == Keys.A) 
{ 
    OLVListItem next = listSession.GetNextItem(listSession.SelectedItem); 
    if (next == null) 
    { 
    return; 
    } 

    listSession.SelectedObject = (Session)next.RowObject; 
    listSession.EnsureModelVisible((Session)next.RowObject); 
} 
+0

मैं यहाँ एक ही समस्या मिल गया .. और यह भी, कैसे GetNextItem जब आइटम बांटा गया .. –

+0

वहाँ कुछ तरीके हैं जो 'GetNthItemInDisplayOrder()' और 'GetDisplayOrderOfItemIndex()' जैसे प्रदर्शन ऑर्डर के आधार पर आइटम इंडेक्सिंग का संदर्भ लेते हैं, लेकिन मुझे कामकाजी कामकाज के साथ आने का प्रबंधन नहीं हुआ। –

उत्तर

3

यह ठीक काम करता है उदा। नीचे दिखाया गया आइटम जाना:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index + 1); 

और प्रदर्शित आइटम ऊपर जाने के लिए:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index - 1); 
+0

यह TreeListView के लिए अच्छी तरह से काम नहीं करेगा क्योंकि नीचे जाकर संभावित माता-पिता से बाहर निकलने का मतलब हो सकता है। अगर उस दिशा में कोई और भाई बहन नहीं है तो मैं एक शून्य या -1 वापस प्राप्त करना चाहता हूं। –

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