
我想搞一個東西,選中的行中有文本框是我自定義上去的,不是從資料庫查出來的。我想把選中的這兩條資料的ID新增到資料庫中,同時把對應的文本框的值也一起新增到另一張表中。是各自文本框對應的值啊。大家有什么辦法嗎。最好是有代碼,本人菜鳥,知道理論也搞不出來
xaml代碼:
<DataGridTemplateColumn Header="核銷金額" Width="150" x:Name="txt_aaaa">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Height="20" x:Name="txt_AmountOCAV" LostFocus="Txt_AmountOCAV_LostFocus" Text="{Binding ResShare,UpdateSourceTrigger=PropertyChanged}" Width="120"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
uj5u.com熱心網友回復:
1.用ObservableCollection<T>做為資料源系結DataGrid串列,這樣有新增資料也好處理。2.Mode=TwoWay,這樣可以獲取到前端修改后的資料。
例子如下:
XAML:
<DataGrid ItemsSource="{Binding DataList,Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="核銷金額" Width="150" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Height="20" Text="{Binding ResShare,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Width="120"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
CS后臺:
public partial class MainWindow : Window
{
MainWindowViewModel vm = new MainWindowViewModel();
public MainWindow()
{
InitializeComponent();
this.DataContext = vm;
}
private void BtnTest_Click(object sender, RoutedEventArgs e)
{
foreach (var item in vm.DataList)
{
// 獲取資料
}
}
}
public class MainWindowViewModel
{
public ObservableCollection<CTestInfo> DataList { get; set; }
public MainWindowViewModel()
{
DataList = new ObservableCollection<CTestInfo>();
DataList.Add(new CTestInfo { IsSelected = true, TestCaseInfo = "選項1", ResShare = 25.7 });
DataList.Add(new CTestInfo { IsSelected = false, TestCaseInfo = "選項2", ResShare = 36.9 });
}
}
public class CTestInfo
{
public bool IsSelected { get; set; }
public string TestCaseInfo { get; set; }
public double ResShare { get; set; }
}
uj5u.com熱心網友回復:
我的那個文本框是自定義的,就是自己寫資料上去的,不是從資料庫查出來的。所以,這個不適用uj5u.com熱心網友回復:
你了解一下WPF的資料系結可以是單項的,也可以雙向的;不是說只有從資料庫查出來的才可以系結,實際上大多數情況下ViewModel都不是直接從資料庫查出來的uj5u.com熱心網友回復:
用了你的代碼,不行,有更好的方法?uj5u.com熱心網友回復:
