【问题标题】:Adding rows to DevExpress GridView向 DevExpress GridView 添加行
【发布时间】:2012-04-13 19:29:19
【问题描述】:

有人可以帮我解决这个问题吗?普通的 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 中添加空行。

有什么想法吗?

【问题讨论】:

  • 我将一个 DevEx GridControl 拖到一个表单中,只是将名称更改为 gcProxies,然后复制了您的代码,它就可以工作了。你能展示创建 GridControl 和它的 GridView 的代码吗?
  • 问题是我在 GridControl 中指定了列,一旦删除它们就可以了。是否可以拥有来自 dataTable 的行以及添加的未绑定行?

标签: c# winforms devexpress


【解决方案1】:

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

除了将 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;
    }

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

【讨论】:

  • 谢谢,虽然我用另一种方式修复了它,但稍后会派上用场!
【解决方案2】:

我遇到了和你类似的问题,我已经通过添加解决了它

gcProxies.PopulateColumns();

还有一件事是 DataSource 已贬值,因此请改用 ItemSource。

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多