我在页面上有400多个文本框。该页面是纸质表格的精确复制品。用户将编辑所有字段,然后将数据保存到DB。数据将从SQL DB下拉到DataTable中。
我打算通过相同的DataTable或通过批量更新来保存数据。不是100%。但是,我需要访问该数据。也许我没有做到最好的下一个最好的部分,如果我不是,如果我被告知更好的方式,我会很感激。
当DataTable获取数据时,我将每个字段分配到适当的控件中。以下是如何添加数据的示例。
foreach (DataRow CDR in ClaimDataTable.Rows){
if (CDR["BoxNumber"].ToString() == "1.1")
this.Box1_1.Text = CDR["DataValue"].ToString();
if (CDR["BoxNumber"].ToString() == "1.2")
this.Box1_2.Text = CDR["DataValue"].ToString();
if (CDR["BoxNumber"].ToString() == "1.3")
this.Box1_3.Text = CDR["DataValue"].ToString();
我写了一些代码来自动创建代码。所以我没有手动编写所有400多行。
我在想的是,我可以为每个TextBox添加一个LostFocus事件。然后当控件失去焦点时,我会创建一个带有框名和框值的类。将其添加到列表中,当它们准备好保存时,只需遍历列表并使用BoxNumber和框数据进行批量更新。
那可行吗?或者有更好的方法吗?
谢谢!
答案 0 :(得分:3)
答案 1 :(得分:2)
当DataTable获取数据时,我将每个字段分配到 适当的控制。
WPF是数据绑定,并且通常不会像您提到的那样加载控件。为什么代码没有绑定到每个控件到属于INotifyPropertyChanged的属性?
然后,每个需要该值的控件将在设置后自动显示它,如本例所示。
<TextBlock Name="tbHeader"
Text="{Binding CDRData}" />
然后只需要将值写入名为CDRData的属性一次,并且绑定的所有文本框都将获得该值。