2017-02-16 28 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; 
     } 

    } 
} 

有一個允許datagrid添加新行的按鈕。 該數據網格有2列,兩列均爲UltraComboColumnB combobox的數據根據​​是ColumnA。根據上面的代碼,如果數據網格只有1行,它會起作用,但是一旦用戶添加另一行,兩行ColumnB將共享相同的數據源。根據特定行的另一列設置特定單元的組合框的數據源

如何確保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; 

     } 

    } 
} 
相關問題