日期:2014-05-18  浏览次数:20844 次

.net的数据绑定控件,真是华而不实
搞winform的一阵子,发现.net的数据绑定控件,真是华而不实。请看我下面的需求:
显示数据,提交修改,于是我用到了datagridview,链接到bindingsource,bindingsource链接到一个datatable.用一个
DataAdapter.Fill(dataSet1, "tablename");

当datagridview中的数据修改时,DataAdapter.update就可以把修改的数据写入数据库了。。。。。。。。。。。。。可是问题来了,由于数据表中保存的是代码,于是在datagridview获取数据的时候,我又人工的把相应的代码显示为其对应的名称,。。比如字段Code=001,代码 "马大帅"。。
而一旦datagridview显示的"马大帅"后,我DataAdapter.update后他就直接把”马大帅“入了代码库中,所有又不得不人工把名称又修改为其代码,再update,多麻烦啊..。。。。。。。。。。。。。。。所以我现在都不用数据绑定控件,而是直接自己构造SQL代码来写库了。。。。

------解决方案--------------------
你应该在cellformatting事件中处理显示其他文字
------解决方案--------------------
的一阵子,发现.net的数据绑定控件,真是华而不实。请看我下面的需求:
显示数据,提交修改,于是我用到了datagridview
------解决方案--------------------
2楼说的是有一个事件 可以提前拦截 保存操作,让你先修改数据——这个事件我没有用过,但相信应该有;

另外,针对你的问题,我说几点自己的看法:
华而不实:针对你的项目,你说的是 代码简单,但是可维护性低!!

真的 微软的服务器控件,我是这么看得:
1. 服务器控件编码简单,可以加快软件开发;
2. 服务器控件只能用于网站后台;
3. 可以实现架构化,就是动态界面设计;

————————————————————————————————
一般情况,除非是做临时的 项目,否则,我使用的 服务器控件 都是有 中间继承的;

比方说, TextBox 和 Label 都继承同一个接口,写出新的控件,实现 共同功能;


你上面说的, “马大帅”=‘001’ ——理论上,这各地方最好是用 下拉列表做的;

或者,你应该 重写一个自己的 MyTextBox,允许这个控件,可以保存两个值:显示值 和 实际值;
处理该控件的 数据绑定事件 和 数据读取事件,绑定时绑定显示值,读取时绑定 实际值;




------解决方案--------------------
人不行还嫌路不平 没有烂语言 主要看谁操控它。。