C# 设置特定单元格的数据源';基于特定行的另一列创建组合框 private void dgGrid_CellListSelect(对象发送方,CellEventArgs e) { if(e.Cell.Column.Key==“ColumnA”) { UltraGridRow selectedItem=((UltraCombo)e.Cell.EditorControlResolved)。SelectedRow; 如果(selectedItem!=null) { //方案A cmbColumnB.DataSource=GetUISender().RetrieveData(数据集).dataTable; cmbColumnB.DataBind(); //方案B //((UltraCombo)e.Cell.Row.Cells[“ChipSetID”].EditorControlResolved.DataSource=GetUISender().RetrieveData(dataset).dataTable; } } }

C# 设置特定单元格的数据源';基于特定行的另一列创建组合框 private void dgGrid_CellListSelect(对象发送方,CellEventArgs e) { if(e.Cell.Column.Key==“ColumnA”) { UltraGridRow selectedItem=((UltraCombo)e.Cell.EditorControlResolved)。SelectedRow; 如果(selectedItem!=null) { //方案A cmbColumnB.DataSource=GetUISender().RetrieveData(数据集).dataTable; cmbColumnB.DataBind(); //方案B //((UltraCombo)e.Cell.Row.Cells[“ChipSetID”].EditorControlResolved.DataSource=GetUISender().RetrieveData(dataset).dataTable; } } },c#,winforms,datagrid,infragistics,C#,Winforms,Datagrid,Infragistics,有一个按钮允许datagrid添加新行。 此数据网格有两列,两列都是UltraComboColumnB组合框的数据源将基于ColumnA。根据上面的代码,如果datagrid只有一行,它就可以工作,但是一旦用户添加了另一行,这两行的ColumnB将共享相同的数据源 如何确保ColumnB的数据源保持独立而不影响其他行?很明显,这是因为每一行都共享相同的组件,即cmbColumnB,但我不确定如何删除引用我找到了解决方案,每次创建一个新的UltraCombo并将其绑定到特定单元格的编辑器控件上 p

有一个按钮允许datagrid添加新行。 此数据网格有两列,两列都是
UltraCombo
ColumnB
组合框的数据源将基于
ColumnA
。根据上面的代码,如果datagrid只有一行,它就可以工作,但是一旦用户添加了另一行,这两行的
ColumnB
将共享相同的数据源


如何确保
ColumnB
的数据源保持独立而不影响其他行?很明显,这是因为每一行都共享相同的组件,即
cmbColumnB
,但我不确定如何删除引用我找到了解决方案,每次创建一个新的
UltraCombo
并将其绑定到特定单元格的
编辑器控件上

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;
        }

    }
}
private void dgGrid_CellListSelect(对象发送方,CellEventArgs e)
{
if(e.Cell.Column.Key==“ColumnA”)
{
UltraGridRow selectedItem=((UltraCombo)e.Cell.EditorControlResolved)。SelectedRow;
如果(selectedItem!=null)
{
UltraCombo值=新的UltraCombo();
cmbValue.LimitToList=真;
cmbValue.DropDownStyle=UltraComboStyle.DropDownList;
cmbValue.DataSource=GetUISender().RetrieveData(数据集).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;
}
}
}
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;

        }

    }
}