2009-01-31 16 views
7

में प्रदर्शित नहीं होता है जब एप्लिकेशन चलाया जाता है, DataGridViewDataTable से जुड़ा हुआ है। बाद में मैं DataTable प्रोग्रामेटिक रूप से अधिक कॉलम जोड़ता हूं और यह अंतर्निहित डेटा में दिखाई देता है - यानी कॉलम ऑर्डिनल जैसा होना चाहिए। हालांकि यह DataGridView में दिखाई नहीं देता है। इसके बजाय कॉलम मूल रूप से जेनरेट किए गए सेट पर जोड़े गए हैं।डेटाग्रिड व्यू से जुड़े डेटाटेबल में कॉलम ऑर्डर बदलना

यह उदाहरण दर्शाता है,

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public DataTable data = new DataTable(); 

    private void button1_Click(object sender, EventArgs e) 
    { 

     this.dataGridView1.DataSource = data; 
     for (int i = 0; i < 5; i++) 
     { 
      this.data.Columns.Add(i.ToString()); 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     DataColumn foo = new DataColumn(); 
     this.data.Columns.Add(foo); 
     foo.SetOrdinal(0); 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     foreach (DataColumn tmpCol in this.data.Columns) 
     { 
      Console.WriteLine("{0} : {1}", tmpCol.ColumnName, tmpCol.Ordinal); 
     } 
    } 
} 

बटन 1, कॉलम उत्पन्न बटन 2 एक कॉलम जोड़ने पर और 0 के लिए क्रमसूचक सेट तो यह ग्रिड में पहले होना चाहिए, बटन 3 प्रदर्शित करता है स्तंभों की ऑर्डिनल्स और दिखाता है कि वे DataTable में कैसे होना चाहिए।

उत्तर

9

यह है कि कैसे DataGridView काम करता है; ऑटो-जेनरेट कॉलम सक्षम होने के साथ, अतिरिक्त (अप्रयुक्त) कॉलम अंत में जोड़े गए हैं। आप इसे ठीक करने के लिए अनबाइंड और पुनः बाध्य कर सकते हैं; डेटा स्रोत शून्य पर सेट और वापस मेज पर:

this.dataGridView1.DataSource = null; 
this.dataGridView1.Columns.Clear(); 
this.dataGridView1.DataSource = data; 
1

मैं एक ऐसी ही समस्या थी और DataGridViewColumn.DisplayIndex संपत्ति के साथ इसे हल।

dgvData.Columns["COLUMN_NAME"].DisplayIndex = 0; // will move your custom column to first position 
संबंधित मुद्दे