2009-09-02 8 views
5

मैं एक क्रमबद्ध डेटाग्रिडव्यू इनपुट बनाना चाहता हूं। निम्नलिखित कोड स्निपेट काफी कटौती नहीं करता है; भले ही मैं एक grd.Refresh डालता हूं, डेटाग्रिडव्यू अपने अद्यतन मान नहीं दिखाता है। अगर मैं कुंजी नीचे तीर दबाता हूं और फिर ऊपर जाता हूं, तो ग्रिड ताज़ा होता है। क्या कोई और तरीका है जिससे मैं डेटाग्रिडव्यू की सामग्री को रीफ्रेश कर सकता हूं?डेटाग्रिड व्यू की सामग्री को रीफ्रेश करने के लिए कैसे मजबूर करें?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace TestSortedInput 
{ 
    public partial class Form1 : Form 
    { 
     DataTable _dt = new DataTable(); 

     public Form1() 
     { 
      InitializeComponent(); 

      grd.AllowUserToAddRows = false; 

      _dt.Columns.Add("sort", typeof(int)); 
      _dt.Columns.Add("product", typeof(string)); 

      _dt.DefaultView.Sort = "sort"; 

      grd.DataSource = _dt; 
     } 

     private void dataGridView1_KeyUp(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.Insert) 
      {     
       if (e.Modifiers == 0) 
       { 
        var r = _dt.NewRow(); 
        r["sort"] = _dt.DefaultView.Count + 1; 
        r["product"] = ""; 

        _dt.Rows.Add(r); 
       } 
       else if (e.Alt) 
       { 
        var drv = this.BindingContext[_dt].Current as DataRowView; 

        int sort = (int)drv["sort"]; 

        for (int i = _dt.DefaultView.Count - 1; i >= (int)drv["sort"] - 1; --i) 
        {       
         _dt.DefaultView[i]["sort"] = (int) _dt.DefaultView[i]["sort"] + 1;       
        } 

        var r = _dt.NewRow(); 
        r["sort"] = sort; 

        _dt.Rows.Add(r); 

        grd.Refresh(); 
       } 
      } 
     }//void 
    } 
} 

उत्तर

9

द्वारा

drv.EndEdit(); 

चयनित पंक्ति संपादन मोड में है

grd.Refresh(); 

बदलते तो आप लेने के लिए छँटाई जगह के लिए इसे समाप्त करने के लिए है।

+0

इसने मेरी समस्या हल की। वाह, मैंने वास्तव में अनदेखा किया है (drv.EndEdit), अनुमान है कि मुझे कॉल करने के लिए उपयोग नहीं किया जाता है। EndEdit, यह मेरे उपclassed फॉर्म में स्वचालित है। बहुत बहुत धन्यवाद^_ ^ – Hao

1

क्या आपने स्रोत के साथ बाध्यकारी स्रोत का उपयोग डेटाटेबल के रूप में करने का प्रयास किया है, और फिर बाइंडिंगसोर्स की रीसेट बाइंडिंग विधि को कॉल किया है?

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