使用DataColumn值作为UltraGridColumn上ValueList的源

时间:2013-03-12 18:52:42

标签: infragistics ultragrid

有没有办法可以将DataTable中的DataColumn用作UltraGrid列的ValueList

我将列样式设置为DropDownList。问题是,我对ValueList使用了什么?

ultraGrid1.DisplayLayout.Bands[0].Columns["col"].Style = ColumnStyle.DropDownList;
ultraGrid1.DisplayLayout.Bands[0].Columns["col"].ValueList = ???

2 个答案:

答案 0 :(得分:2)

创建BindableValueList。其中一个Constructors获取数据源的对象,dataMember,displayMember,valueMember和bindingContextControl。

设置ValueList的代码行:

this.ultraGrid1.DisplayLayout.Bands[0].Columns["col"].ValueList = new BindableValueList(dt, "", "displayColumn","valueColumn", this.ultraGrid1);

在上面的示例中,dt是您要绑定的DataTable,displayColumn和valueColumn将是您要用作下拉列表的显示和值部分的列的键。如果要绑定到DataSet并希望绑定到第一个表以外的表,则可以使用第二个参数传入要绑定到的表的名称。

答案 1 :(得分:0)

这可能会有所帮助。它是一个简单的过程,它接收DataTable,ValueList的Key属性的值以及要用作ValueList列表的字段的名称,并返回一个值列表以在其中一个UltraGridColums中设置

    public ValueList DataTableToValueList(DataTable dt, string vlKey, string fieldName)
    {
        ValueList vl = new ValueList();
        if (!string.IsNullOrEmpty(vlKey)) vl.Key = vlKey;
        foreach (DataRowView r in dt.DefaultView)
            vl.ValueListItems.Add(r[fieldName]);
        return vl;
    }

以这种方式使用(可能在InitializeLayout事件中)

    grd.DisplayLayout.Bands[0].Columns["col"].ValueList = 
                    DataTableToValueList(dtCustomers,"vlCustomer", "CustomerName");