0

调用SetDataBinding(object DataSource, string DataMember, bool hideNewColumns)时如何在UltraGrid上设置Key preoperty?我怎样才能将它设置为除此之外的东西?List'1

我有以下表格和课程:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.ultraGrid2.SetDataBinding(new List<row>(), string.Empty, true);
        this.ultraGrid2.DisplayLayout.ColumnChooserEnabled = DefaultableBoolean.True; 
        // breakpoint on the above line and run the below immediate window code
    }
}

public class row
{
    public string Name { get; set; }
    public string Address { get; set; }
}

设置数据绑定后,下面的代码总是List'1在即时窗口中给我:

this.ultraGrid2.DisplayLayout.Bands[0].Key
4

2 回答 2

1

在 UltraGridBand 对象上,有一个在数据绑定期间调用的私有方法,称为 InitBandKey,并且在此方法中设置了密钥。

其逻辑类似于以下内容:

CurrencyManager cm = (CurrencyManager)this.bindingManager;
if (cm.List is ITypedList) 
{
    newKey = ((ITypedList)cm.List).GetListName(null);
} 
else 
{
  newKey = cm.List.GetType().Name;
}     

在您的示例中,您得到的结果是(new List<row>()).GetType().Name

您可以定义一个派生自的类,List<row>然后该类的名称将成为乐队的关键。例如:

public class CustomList:List<row>
{

}

然后,此示例对 SetDataBinding 的更新调用是:

this.ultraGrid1.SetDataBinding(new CustomList(), string.Empty, true);
于 2013-03-06T22:35:41.847 回答
0

尝试KeyBand[0]设计时设置 。

通常 Band[x].Key 是绑定的 DataTable/DataView 的名称,但如果List<T>没有名称可以使用,这可能是由控件自动定义的

于 2013-03-06T22:09:18.620 回答