当组合框选择一个值时自动填充文本框

时间:2013-06-07 18:24:23

标签: c# datagridview datagridcomboboxcolumn datagridviewtextboxcell

我有一个表(SQL Server中的WareTable)。

我需要在表单中使用datagridview(= dgv)。

在我的dgv中,第1列是ComboBox(WareName)。

我想在ComboBox中选择一个值时,下一列(sellPrice)将自动填充。

我怎么做?

1 个答案:

答案 0 :(得分:0)

多重绑定会帮助你吗?如果数据网格视图中的每一行都有一个viewmodel,则在第1列中选择一个值应该在viewmodel上设置一个属性。您可以设置一个多绑定和一个值转换器,它将绑定到第1列的属性以及您需要的任何其他数据,并在第2列中显示正确的值。

<DataGridTextColumn 
  Header="Ticket Qty" 
  Width="Auto" 
  IsReadOnly="True" >
  <DataGridTextColumn.Binding>
    <MultiBinding Converter="{StaticResource unitConverter}">
      <Binding Path="Column1ViewModelProperty"/>
      <Binding Path="Column2ViewModelProperty" />
      <Binding Path="AdditionalViewModelProperty"/>
    </MultiBinding>
  </DataGridTextColumn.Binding>
</DataGridTextColumn>

http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.converter.aspx

或者,您可以对Column1ViewModelProperty更改实际视图模型类中的Column2ViewModelProperty(在Column1ViewModelProperty的setter中引发事件或调用将更新Column2ViewModelProperty的方法)。

<DataGridTextColumn Binding="{Binding Column1ViewModelProperty }"/>

//Code behind
public string Column1ViewModelProperty {
  get{
    return _column1ViewModelProperty;
  }
  set{
    _column1ViewModelProperty = value;
    Column2ViewMOdelProperty = calculatedValue;
    OnPropertyChanged("Column1ViewModelProperty");
  }
}

public string Column2ViewModelProperty {
  get{
    return _column2ViewModelProperty;
  }
  set{
    _column2ViewModelProperty = value;
    OnPropertyChanged("Column2ViewModelProperty");
  }
}