有人可以帮我这个吗?当常规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中添加空行。
有什么想法吗?
答案 0 :(得分:5)
您的问题是您在设计器中创建了一个列,然后您的代码没有覆盖它。
除了将DataTable绑定到网格的数据外,还可以包含显示任意数据或基于表达式显示数据的未绑定列。以下是创建未绑定列的基本示例:How to: Add an Unbound Column
在您的示例中,您可以在设置数据源后添加未绑定列:
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;
然后,这是填充未绑定列的事件:
void gridView1_CustomUnboundColumnData(object sender,
DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
if (e.Column.FieldName == "Total" && e.IsGetData)
e.Value = 100;
}
这些示例可让您开始自定义您的确切解决方案。
答案 1 :(得分:4)
我遇到了与你类似的问题,我通过添加
解决了这个问题gcProxies.PopulateColumns();
另外还有一件事就是DataSource被折旧,所以请切换到ItemSource。