【问题标题】:How to initialize a combobox in InitNewRow如何在 InitNewRow 中初始化组合框
【发布时间】:2011-06-29 16:28:36
【问题描述】:

我正在尝试使用 InitNewRow 事件来填充 ASPXComboBox 以插入新行,但在将数据绑定到 ASPXComboBox 时遇到问题。

我已使用 CellEditorInitialize 事件来编辑行,它工作正常,但 InitNewRow 事件上的相同主体出现“对象未设置为对象的实例”异常。但是,被调用的业务逻辑函数会返回一个完全填充的 DataTable。

有人可以帮忙吗?

【问题讨论】:

  • 能否指定网格的标记和服务器端事件处理程序?
  • 请在 InitNewRow 事件处理程序中发布您的代码,并说明您是只想设置编辑器的值还是还想分配编辑器的数据源?
  • 我已将代码放在 InitNewRow 事件中,并尝试将 e.NewValues 与有序字典绑定。但是,我知道组合框会自动绑定。我想设置组合框数据源
  • 当我使用 e.NewValues() 将数据绑定到控件时,它只返回已绑定的项目的详细信息

标签: asp.net vb.net devexpress aspxcombobox


【解决方案1】:

如果您想设置组合框的数据源,请为此使用CellEditorInitialize 事件。如果您需要确定网格何时在插入新行模式下工作,请使用 ASPxGridView 的IsNewRowEditing 属性。 IE。代码应该是这样的:

protected void ASPxGridView1_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e) {
        ASPxGridView grid = sender as ASPxGridView;
        if(e.Column.FieldName == "SomeFieldName" && grid.IsNewRowEditing) {
            ASPxComboBox combo = e.Editor as ASPxComboBox;
            combo.DataSource = DataTable;
            combo.DataBindItems();
        }
    }

这种方法对你有用吗?

【讨论】:

  • 是的,当我正在编辑一行时,而不是创建一个新行。我需要这个确切的原则,但是当我点击新的命令按钮时,当用户想要向 gridview 添加新行时,他们将看到一个完全填充的组合框
  • 好的,这种方法应该适合你。我上面代码中的 DataTable 变量应该为编辑器提供所需的数据。
猜你喜欢
  • 2010-11-19
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多