關於DevExpress GridControl中gridView1_InitNewRow事件不觸發的原因

很多人問到在使用DevExpress GridControl控件時,在使用了 gridView1.AddNewRow()後,爲什麼gridView1_InitNewRow不觸發?

網上有很多解釋,總結起來大概有如下三條:

1、 gridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;

2、 gridView1.OptionsBehavior.Editable = true;

3、  GridControl必須要用以下形式的綁定數據源。

BindingSource bdSource = new BindingSource();

bdSource.DataSource = InitDt();
this.gridControl1.DataSource = bdSource;

其實主要原因和這些都沒有關係。

真正的原因是GridControl.DataSource=數據源。哪怕是沒有記錄的數據源。否則gridView1_InitNewRow是不會觸發的。

下面是本文的測試Demo代碼:註釋掉多餘的部分,程序照樣測試通過。

 public partial class Form1 : Form
    {
        //BindingSource bdSource = new BindingSource();
        public Form1()
        {
            InitializeComponent();
            //bdSource.DataSource = InitDt();
            this.gridControl1.DataSource = InitDt(); 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //gridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;
            //gridView1.OptionsBehavior.Editable = true;
            gridView1.AddNewRow();
        }

        private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            MessageBox.Show("觸發事件測試");
        }
        private DataTable InitDt()
        {
            DataTable dt = new DataTable("個人簡歷");
            //dt.Columns.Add("id", typeof(int));
            //dt.Columns.Add("name", typeof(string));
            //dt.Columns.Add("sex", typeof(int));
            //dt.Columns.Add("address", typeof(string));
            //dt.Columns.Add("aihao", typeof(string));
            //dt.Columns.Add("photo", typeof(string));
            //dt.Rows.Add(new object[] { 1, "張三", 1, "東大街6號", "看書", "" });
            //dt.Rows.Add(new object[] { 1, "王五", 0, "西大街2號", "上網,遊戲", "" });
            //dt.Rows.Add(new object[] { 1, "李四", 1, "南大街3號", "上網,逛街", "" });
            //dt.Rows.Add(new object[] { 1, "錢八", 0, "北大街5號", "上網,逛街,看書,遊戲", "" });
            //dt.Rows.Add(new object[] { 1, "趙九", 1, "中大街1號", "看書,逛街,遊戲", "" });
            return dt;
        }

}

視圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章