将行添加到DevExpress GridView

问题描述:

有人可以帮助我吗?为什么当对于常规的GridView来说这么简单时,这太难了。将行添加到DevExpress GridView

我想以编程方式添加行。在正常的GridView中,我只需调用gridView.Rows并从那里添加,但我在这里找不到该选项。

我试图创建一个DataTable,然后将其绑定到它,像这样:

 DataTable dt = new DataTable(); 
     dt.Columns.Add("IP", Type.GetType("System.String")); 
     dt.Columns.Add("Port", Type.GetType("System.String")); 
     dt.Columns.Add("Username", Type.GetType("System.String")); 
     dt.Columns.Add("Password", Type.GetType("System.String")); 
     dt.Columns.Add("Working?", Type.GetType("System.Boolean")); 

     for (int i = 0; i < 20; i++) 
     { 
         DataRow dr = dt.NewRow(); 
         dr[0] = "Test"; 
         dr[1] = "Test"; 
         dr[2] = "Test"; 
         dr[3] = "Test"; 
         dr[4] = true; 
         dt.Rows.Add(dr); 
     } 


     gcProxies.DataSource = dt; 

这一切做的是添加空行的GridControl。

任何想法?

+1

我将DevEx GridControl拖入表单中,只将名称更改为gcProxies,然后复制代码并运行。你能展示创建GridControl和它的GridView的代码吗? – 2012-04-14 03:00:51

+0

问题是我已经在GridControl中指定了列,一旦我删除了它的工作。是否有可能从dataTable的行,以及添加未绑定的行? – TheGateKeeper 2012-04-14 09:07:48

你的问题是你在设计器中创建了一个列,然后你的代码没有覆盖它。

除了将DataTable绑定到网格的数据之外,还可以包含未绑定的列,这些列可以显示任意数据或基于表达式显示数据。下面是创建一个绑定列一个简单的例子:

gcProxies.DataSource = dt; 

// Create an unbound column. 
DevExpress.XtraGrid.Columns.GridColumn unbColumn = gridView1.Columns.AddField("Total"); 
unbColumn.VisibleIndex = gridView1.Columns.Count; 
unbColumn.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; 
// Disable editing. 
unbColumn.OptionsColumn.AllowEdit = false; 
// Specify format settings. 
unbColumn.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric; 
unbColumn.DisplayFormat.FormatString = "c"; 
gridView1.CustomUnboundColumnData += gridView1_CustomUnboundColumnData; 

然后,下面是在未绑定列填充事件:How to: Add an Unbound Column

在你的样品,你可以设置你的数据源后添加绑定列:

void gridView1_CustomUnboundColumnData(object sender, 
       DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) 
    { 
     if (e.Column.FieldName == "Total" && e.IsGetData) 
      e.Value = 100; 
    } 

这些例子应该让你开始定制你的确切解决方案。

+0

谢谢,虽然我用另一种方式修复它,但这会稍后派上用场! – TheGateKeeper 2012-04-15 14:28:25

我已经加入

gcProxies.PopulateColumns(); 

还有一件事的数据源是大幅贬值,亲切切换到的ItemSource,而不是面临类似你这样的问题,我已经解决了。