2017-02-16 9 views
0
private void dgGrid_CellListSelect(object sender, CellEventArgs e) 
{ 
    if (e.Cell.Column.Key == "ColumnA") 
    { 
     UltraGridRow selectedItem = ((UltraCombo)e.Cell.EditorControlResolved).SelectedRow; 

     if (selectedItem != null) 
     { 
      //Option A 
      cmbColumnB.DataSource = GetUISender<someBF>().RetrieveData(dataset).dataTable; 
      cmbColumnB.DataBind(); 

      //Option B 
      //((UltraCombo)e.Cell.Row.Cells["ChipSetID"].EditorControlResolved).DataSource = GetUISender<someBF>().RetrieveData(dataset).dataTable; 
     } 

    } 
} 

データグリッドが新しい行を追加できるボタンがあります。 このデータグリッドは2列あり、両方の列はUltraComboです。 ColumnBコンボボックスのデータソースはColumnAに基づいています。上記のコードに基づいて、データグリッドには1行しかないが、ユーザが別の行を追加すると、両方の行のColumnBは同じDataSourceを共有します。特定の行の別の列に基づいて特定のセルのコンボボックスのデータソースを設定します。

ColumnBのDataSourceが他の行に影響を与えずに独立していることを確認するにはどうすればよいですか?すべての行が同じコンポーネント(つまり、cmbColumnB)を共有していますが、参照を削除する方法がわかりません。

答えて

0

毎回新しいUltraComboを作成してそれをバインドするソリューションを見つけました特定の細胞のものEditorControl

private void dgGrid_CellListSelect(object sender, CellEventArgs e) 
{ 
    if (e.Cell.Column.Key == "ColumnA") 
    { 
     UltraGridRow selectedItem = ((UltraCombo)e.Cell.EditorControlResolved).SelectedRow; 

     if (selectedItem != null) 
     { 
      UltraCombo cmbValue = new UltraCombo(); 
      cmbValue.LimitToList = true; 
      cmbValue.DropDownStyle = UltraComboStyle.DropDownList; 
      cmbValue.DataSource = GetUISender<someBF>().RetrieveData(dataset).dataTable; 
      cmbValue.ValueMember = someDS.someDT.someColumnIDColumn.ColumnName; 
      cmbValue.DisplayMember = someDS.someDT.someColumnDescriptionColumn.ColumnName; 
      cmbValue.BindingContext = someDg.BindingContext; 
      cmbValue.DataBind(); 
      e.Cell.Row.Cells["ColumnB"].EditorControl = cmbValue; 
      e.Cell.Row.Cells["ColumnB"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; 

     } 

    } 
} 
関連する問題