0

SetDataBinding(object DataSource、string DataMember、bool hiddenNewColumns)を呼び出すときに、キーの事前操作はどのようにUltraGridに設定されますか?そして、どうすればそれ以外のものに設定できますか?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

設計時Keyにのを設定してみてください。Band[0]

通常、Band[x].KeyはバインドされるDataTable/DataViewの名前ですが、List<T>使用する名前がなく、おそらくこれはコントロールによって自動的に定義されます。

于 2013-03-06T22:09:18.620 に答える