我正在使用Winforms开发一个应用程序,并使用BindingSource
沿着数据绑定网格的路径走下去。我的问题是:
这是最好的方法吗?我应该手动填充单元格而不是让BindingSource
为我做这些吗?它会导致进一步的问题吗?如果在任何情况下数据绑定会产生问题,那将非常有用。
我的一位同事发誓黑色和蓝色不使用数据绑定。我真的不相信他所说的,所以任何利弊都是有价值的。
在连接到单个数据库和可编辑DataGrid
的多用户应用程序的情况下,如何解决更新数据的并发问题?
答案 0 :(得分:15)
在没有说明原因的情况下,对任何事情宣誓黑色和蓝色,坦率地说,这是愚蠢的。
在某些情况下,数据绑定很棒,并且有些情况比实际情况更麻烦。如果仅从频谱的“痛苦”结束报告,你的同事对你没有任何帮助。
对于简单的数据显示,太棒了!它会为您节省大量时间和错误。对于数据的直接更新(包括属性逻辑和IDataErrorInfo
支持),再次,伟大的!。事实上,它是WPF等的核心部分。
有些情况下它不那么有用:
我会问你的同事“为什么”;如果他们不能给出一个充分的理由,我会倾向于忽视它们。如果没有合理的讨论,那就是FUD。
答案 1 :(得分:6)
我个人发现使用更容易编程的数据绑定过程,您不必进行迭代,总体上减少了LOC。
来自Data binding concepts in .NET windows forms:
DataBinding的优势
.NET中的数据绑定可用于 写数据驱动的应用程序 很快。 .NET数据绑定允许 你用快速编写更少的代码 执行但仍然得到工作 以最好的方式完成。
.NET会在后台自动为您编写大量数据绑定代码(您可以在“Windows生成代码”部分中看到它),因此开发人员不必花时间编写基本数据绑定代码,但是仍然可以灵活地修改他想要的任何代码。我们获得了绑定和非绑定方法的好处。
- 醇>
使用事件控制数据绑定过程。这将在本文后面更详细地讨论。
DataBinding的缺点
可以使用未绑定或传统方法编写更多优化代码。
- 醇>
只有使用未绑定方法才能实现完全的灵活性。
更进一步说明,您应该看到Data binding concepts in .NET windows forms
答案 2 :(得分:4)
我没有看到BindingSource组件没有问题。唯一的建议是不要使用Untyped数据集。将BindingList与类和您的所有集合一起使用。
BindingSource肯定比传统的数据绑定更好。
您可以阅读有关BindingSource Component Architecture的所有内容。
一个非常简单的例子:
使用数据绑定非常简单,可以将数据从数据库转换为有用的数据。例如,您在数据库中有一个十进制列,其中包含货币金额:
使用数据绑定,您可以轻松地将其显示为货币:
private void DecimalToCurrencyString(object sender, ConvertEventArgs cevent)
{
// The method converts only to string type. Test this using the DesiredType.
if(cevent.DesiredType != typeof(string)) return;
// Use the ToString method to format the value as currency ("c").
cevent.Value = ((decimal) cevent.Value).ToString("c");
}
private void CurrencyStringToDecimal(object sender, ConvertEventArgs cevent)
{
// The method converts back to decimal type only.
if(cevent.DesiredType != typeof(decimal)) return;
// Converts the string back to decimal using the static Parse method.
cevent.Value = Decimal.Parse(cevent.Value.ToString(),
NumberStyles.Currency, null);
}
private void BindControl()
{
// Creates the binding first. The OrderAmount is a Decimal type.
Binding b = new Binding
("Text", ds, "customers.custToOrders.OrderAmount");
// Add the delegates to the event.
b.Format += new ConvertEventHandler(DecimalToCurrencyString);
b.Parse += new ConvertEventHandler(CurrencyStringToDecimal);
text1.DataBindings.Add(b);
}
来源链接http://msdn.microsoft.com/en-us/library/system.windows.forms.binding.format.aspx
答案 3 :(得分:1)
我使用数据绑定,因为它可以工作,这就是它的用途。您可以随时使用OnDataBinding进行任何自定义(如果需要),同时为支持它们的任何控件调用Bind或DataBind方法。
答案 4 :(得分:1)
你有没有问过你的同事他没有使用数据绑定的原因是什么?如果他反对在特定案件中使用它,那么他可能会做某些事情,但如果他反对使用它,那么你就是不相信他。
数据绑定在某些情况下非常有用,可以为您节省很多麻烦和容易出错的代码。
e.g。假设您使用多个控件来显示数据:如果使用数据绑定,则在更改数据源后控件将自动更新,并且在大多数情况下您无需编写任何代码来更新控件。如果您不使用数据绑定,则必须手动更新每个控件,这将导致容易出错的代码和数据一致性问题,并且如果逻辑发生变化并且您始终希望避免复杂性,则会使代码维护变得复杂代码。
总而言之,就像大多数编程工具一样,它是您计划使用它的地方和方式,以证明其使用的合理性。