2009-07-15 7 views
6

WinForm DataGridView के लिए कुछ ईवेंट हैंडलर DataGridViewCellEventArgs पैरामीटर के रूप में और ColumnIndex उस तर्क की संपत्ति के रूप में हैं।WinForm DataGridView ईवेंट हैंडलर में e.ColumnIndex के बजाय कॉलम नाम का संदर्भ कैसे लें?

ColumnIndex कॉलम के ordinal # का प्रतिनिधित्व करने वाला एक नंबर है।

क्या कॉलम इंडेक्स के बजाय उस तर्क से कॉलम नाम का संदर्भ देने का कोई तरीका है?

तो बजाय कर रही है:

if (e.ColumnName == "CustomerName") 

क्योंकि एक स्तंभ अपनी स्थिति में परिवर्तन है, यह कोड टूट जाएगा:

if (e.ColumnIndex == 1) 

मैं की तरह कुछ पसंद करते हैं।

उत्तर

8

निश्चित रूप से। यह निश्चित रूप से DataGridViewCellEventArgs में नहीं है, लेकिन यह आसानी से प्राप्त किया जा सकता है। अपने ईवेंट हैंडलर में:

DataGridView dgv = (DataGridView)sender; 
string columnName = dgv.Columns[e.ColumnIndex].Name; 
+1

स्ट्रिंग columnName = dgv.Columns (e.ColumnIndex) .Name; यदि आप C# – AdrienTorris

5
if (e.ColumnIndex == dgv.Columns["CustomerName"].Index) 
{ 
    and so on....    
} 
+0

के बजाय VB.NET का उपयोग कर रहे हैं तो मेरे RadGridView पर मुझे UniqueName = "CustomerName" सेट की आवश्यकता है – Devid

3

ऊपर जवाब महान लेकिन आप सेल सूचकांक एक बहुत तो मैं सिर्फ फार्म के लिए निजी पूर्णांक सदस्यों जोड़ देगा संदर्भित करने के लिए, उन्हें नाम "idxMeaningfulColumnNameHere" है, तब प्रारंभ काम करता है फॉर्म के कन्स्ट्रक्टर में ये सदस्य। मैंने इसे इस तरह से बहुत आसान पाया।

idxMeaningfulColumnNameHere = 
    this.YourDataGridViewNameHere.Columns["ColumnNameHere"].Index 
0

यहां आपके डीजीवी में जोड़ने के लिए एक कस्टम विधि है।

<Extension()> 
Friend Function getColumnIndexByName(ByRef dgv As DataGridView, ByRef colName As String) As Integer 
    For Each column As DataGridViewColumn In dgv.Columns 
     If column.Name = colName Then Return column.Index 
    Next 
    Try 
     Throw New Exception("Column Name not Found") 
    Catch ex As Exception 
     MessageBox.Show(colName & ": " + ex.Message) 
    End Try 
    Return -1 
End Function 
है कि आप की तरह कुछ कर सकते हैं के साथ

:

If dgv1.getColumnIndexByName("SOME_COLUMN_NAME") = e.ColumnIndex Then Do_something() 
संबंधित मुद्दे