DataGridView में वर्तमान में चयनित पंक्ति का सूचकांक


96

यह इत्ना आसान है। मुझे वर्तमान में चयनित Rowa का सूचकांक कैसे मिलेगा DataGridView? मुझे Rowऑब्जेक्ट नहीं चाहिए , मुझे इंडेक्स चाहिए (0 .. n)।

जवाबों:


165

नहीं है RowIndexके लिए संपत्ति CurrentCellDataGridView के लिए संपत्ति।

datagridview.CurrentCell.RowIndex

SelectionChangedघटना को संभालें और ऊपर के रूप में चयनित पंक्ति का सूचकांक ढूंढें।


1
उत्तम। यह सबसे सरल / तेज़ लगता है, यहां तक ​​कि SelectRows [0] .Index पर भी। क्या यह एक अच्छी धारणा होगी?
EricE

हम्म, मैंने कई पंक्तियों के चयन के बारे में नहीं सोचा था। मैं इस मामले में वर्तमान सेल के व्यवहार के बारे में निश्चित नहीं हूं।
फ्लेचर

1
यदि यह एक्सेल की तरह कुछ भी है, तो चयनित सूची में कई पंक्तियां / कॉलम हो सकते हैं, लेकिन केवल एक वर्तमान / सक्रिय सेल है। मुझे केवल वर्तमान पंक्ति की परवाह है इसलिए यह ठीक करना चाहिए।
EricE

18
मुझे पता है कि यह पोस्ट पुरानी है, लेकिन यह किसी और की मदद कर सकता है: CurrentCell"सक्रिय" सेल लौटाता है, जो "चयनित" से अलग है। यहां तक ​​कि अगर कई पंक्तियों का चयन किया जाता है, तो सक्रिय सेल कहीं और हो सकता है, और केवल एक सक्रिय सेल हो सकता है
ल्यूक मर्लिन

3
और यह भी, भले ही आप डेटा ग्रिड दृश्य में सब कुछ डी-सेलेक्ट करते हैं, फिर भी सेल में से एक सक्रिय होगा, इसलिए आप इस पर विश्वास नहीं कर सकते हैं कि यह अशक्त है या ऐसा कुछ है जिसके लिए कोई पंक्तियाँ चयनित नहीं हैं।
डेनियल ग्रे

37

अपने DGV के चयनित संग्रह में सूचकांक संपत्ति का उपयोग करें:

int index = yourDGV.SelectedRows[0].Index;

क्या आपको लगता है कि यह बेहतर है या DGV.CurrentCell.RowIndex?
EricE

4
वर्तमान सेल को कुछ मामलों में नहीं चुना जा सकता है, इसलिए यह बेहतर तरीका है।
लिटिल एंडियन

1
@ जब आप कोई पंक्ति नहीं चुनते हैं तो @thuthinnang, @JayRiggs समाधान इंडेक्स एरर को दो फेंक देगा। बेहतर होगा कि तुम एक साथ लपेटा थाif
एलन खंडहर

7
dataGridView1.SelectedRows[0].Index;

या यदि आप LINQ का उपयोग करना चाहते हैं और सभी चयनित पंक्तियों का सूचकांक प्राप्त करना चाहते हैं, तो आप कर सकते हैं:

dataGridView1.SelectedRows.Select(r => r.Index);

सहायक (IndexOf वास्तव में "मेरे रडार पर" अभी तक नहीं था), लेकिन पंक्ति प्राप्त करने के बाद से गोल चक्कर आवश्यक नहीं है। .Index विधि वही है जिसकी मुझे तलाश थी।
EricE


3

कोशिश करो यह काम करेगा ... यह आपको चयनित पंक्ति सूचकांक का सूचकांक देगा ...

int rowindex = dataGridView1.CurrentRow.Index;
MessageBox.Show(rowindex.ToString());

2

इसे इस्तेमाल करे

bool flag = dg1.CurrentRow.Selected;

if(flag)
{
  /// datagridview  row  is  selected in datagridview rowselect selection mode

}
else
{
  /// no  row is selected or last empty row is selected
}

धन्यवाद, वास्तव में मुझे यह निर्धारित करने की आवश्यकता थी कि ग्रिडव्यू से जुड़े नियंत्रण का उपयोग करते समय किसी चयनित पंक्ति का छिपा हुआ मूल्य क्या होगा।
23

2

मैंने @JayRiggs का उत्तर संशोधित किया, और यह काम करता है। आपको इसकी आवश्यकता है ifक्योंकि कभी-कभी चयनित राउटर खाली हो सकता है, इसलिए सूचकांक संचालन एक अपवाद फेंक देगा।

if (yourDGV.SelectedRows.Count>0){
    int index = yourDGV.SelectedRows[0].Index;
}

1

DataGridView.CurrentCellAddress का प्रयास करें

रिटर्न: एक बिंदु जो वर्तमान में सक्रिय सेल की पंक्ति और कॉलम इंडेक्स का प्रतिनिधित्व करता है।

ईजी पहली कॉलम और पांचवीं पंक्ति का चयन करें, और आपको वापस मिल जाएगा: प्वाइंट (एक्स = 1, वाई = 5)


PS चूंकि मैंने पंक्ति सूचकांक के लिए कहा था, हमारे संबंध में चीजें कम पथरीली होती अगर आपने कहा होता DataGridView.CurrentCellAddress.Y... :)
ErikE

मुझे लगता है कि इस बिंदु पर ये सभी उत्तर मान्य हैं, यह सिर्फ आपके ऊपर है, जिसे आप चुनना चाहते हैं जो आपके उद्देश्यों के लिए सबसे साफ है। मैं अलग कार्यान्वयन लिखे और नेट परावर्तक (में आईएल को देख सुझाव देंगे red-gate.com/products/reflector ) यदि आप वास्तव में देखने के लिए क्या कोड प्रत्येक के लिए उत्पन्न हो जाता है चाहता हूँ, लेकिन के रूप में कई कहेंगे, कि सूक्ष्म है हिन्दी -Optimization। यह वास्तव में नीचे है जो इरादे में सबसे स्पष्ट है। भविष्य में अधिक स्पष्ट होने के लिए लिया गया पीएस नोट।
किलानाश

1

कोशिश करो:

int rc=dgvDataRc.CurrentCell.RowIndex;** //for find the row index number
MessageBox.Show("Current Row Index is = " + rc.ToString());

मुझे आशा है कि यह आपकी मदद करेगा।


3
में chipping के लिए धन्यवाद, लेकिन आपका उत्तर चयनित (और सबसे उत्कीर्ण उत्तर) का एक डुप्लिकेट है जिसने समाधान दिया datagridview.CurrentCell.RowIndex। मेरी क्षमायाचना-मैं यह सिफारिश करने जा रहा हूं कि इस पोस्ट को पूर्ण डुप्लिकेट के रूप में हटा दिया जाए।
ErikE

0

आप इस कोड को आज़मा सकते हैं:

int columnIndex = dataGridView.CurrentCell.ColumnIndex;
int rowIndex = dataGridView.CurrentCell.RowIndex;

0

यदि पंक्ति मूल्य क्लिक किया जाता है तो मैंने उपयोग किया:

private void dataGridView_Product_CellClick(object sender, DataGridViewCellEventArgs e){
    int rowIndex;
    //rowIndex = e.RowIndex; //Option 1
    //rowIndex= dataGridView_Product.CurrentCell.RowIndex; //Option 2
    rowIndex = dataGridView_Product.CurrentRow.Index; //Option 3
}

-1

निम्नलिखित प्रयास करें:

int myIndex = MyDataGrid.SelectedIndex;

यह पंक्ति का सूचकांक देगा जो वर्तमान में चयनित है।

उम्मीद है की यह मदद करेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.