C# 向DevExpress GridView添加行

C# 向DevExpress GridView添加行,c#,winforms,devexpress,C#,Winforms,Devexpress,有人能帮我吗?为什么这对常规GridView来说如此简单却如此困难 我正在尝试以编程方式添加行。在普通的GridView中,我只调用GridView.Rows并从那里添加,但我在这里找不到该选项 我尝试创建一个DataTable,然后将其绑定到它,如下所示: DataTable dt = new DataTable(); dt.Columns.Add("IP", Type.GetType("System.String")); dt.Columns.

有人能帮我吗?为什么这对常规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;
DataTable dt=newdatatable();
Add(“IP”,Type.GetType(“System.String”);
Add(“Port”,Type.GetType(“System.String”);
Add(“Username”,Type.GetType(“System.String”);
Add(“Password”,Type.GetType(“System.String”);
Add(“Working?”,Type.GetType(“System.Boolean”);
对于(int i=0;i<20;i++)
{
DataRow dr=dt.NewRow();
dr[0]=“测试”;
dr[1]=“测试”;
dr[2]=“测试”;
dr[3]=“测试”;
dr[4]=真;
dt.Rows.Add(dr);
}
gcProxies.DataSource=dt;
所做的只是在GridControl中添加空行


有什么想法吗?

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

除了将数据表绑定到网格的数据外,还可以包含未绑定的列,这些列可以显示任意数据,也可以基于表达式显示数据。以下是创建未绑定列的基本示例:

在示例中,可以在设置数据源后添加未绑定列:

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;
    }

这些示例应该可以让您开始定制精确的解决方案。

我遇到了一个与您类似的问题,我通过添加

gcProxies.PopulateColumns();

还有一件事,数据源被贬低了,所以请改用ItemSource。

我将一个DevEx GridControl拖到一个表单中,只将名称更改为gcProxies,并复制了您的代码,它成功了。您能展示创建GridControl及其GridView的代码吗?问题是我在GridControl中指定了列,一旦我删除它们,它就可以工作了。有可能从dataTable中获得行以及添加未绑定行吗?谢谢,虽然我用另一种方式修复了它,但这将在以后派上用场!