我有几个实体,如:客户,产品,订单,订单详细信息,员工等。每个实体都有一个带有CRUD功能的窗口表单。
我遇到的问题是,在将数据从DataSet传递给Controls反之时,我编写了很多这样的行。
Search()
{
DataSet dsResult = Server.InvokeSearch();
txtCustName.Txt = dsResult.Tables["Customer"].Rows[0]["CustName"];
... //like 50 columns
txtAddress.Txt = dsResult.Tables["Customer"].Rows[0]["Address"];
}
Save()
{
dsUpdate.Tables["Customer"].Rows[0]["CustName"] = txtCustName.Txt;
... //like 50 columns
dsUpdate.Tables["Customer"].Rows[0]["Address"] = txtAddress.Txt;
Server.Update(dsUpdate);
}
如果我只指定Table.Column,如果控件有办法检索值本身,那将非常好:
txtCustName.DbColumn = "Customer.CustName";
Search()
{
mainDs = server.InvokeSearch();
}
Update()
{
server.Update(mainDs);
}
我完全迷失了。我不知道应该搜索什么主题&调查。 欢迎任何提示,帮助,链接和示例。
答案 0 :(得分:0)
你有没有探索WinForms data binding可能性? 这样您就可以直接将控件映射到数据源。
答案 1 :(得分:0)
数据绑定是你的朋友。您可以通过以下简单步骤实现您的要求:
(A)宣布成员
BindingSource bindingSource;
DataSet dataSet;
(B)设置绑定
bindingSource = new BindingSource { DataMember = "Customer" };
txtCustName.DataBindings.Add("Text", bindingSource, "CustName");
txtAddress.DataBindings.Add("Text", bindingSource, "Address");
// ...
你完成了。
请求用法:
// Search
bindingSource.DataSource = dataSet = server.InvokeSearch();
// Update
server.Update(dataSet);
请注意,使用中间BindindgSource
可以轻松地将所有控件重新绑定到其他数据源。