Winforms 中的数据绑定

Posted

技术标签:

【中文标题】Winforms 中的数据绑定【英文标题】:Databinding in Winforms 【发布时间】:2011-12-01 14:32:06 【问题描述】:

我在 VS2010 中有一个数据输入 Winforms App。连同连接到 SQL Compact 数据库的实体数据模型 (.edmx)。在这个数据库中,我有一个要插入的表 Ticket。

在我的表单上,我设置了所有控件的 DataBindings 属性并指向数据库中的正确字段。

我正在尝试从表单上的控件中获取值并添加一个非数据绑定字段并保存票证。

这是我的代码:

private void btnSave_Click(object sender, EventArgs e)
    
                this.TS = new TicketService();
                Ticket t = (Ticket)ticketBindingSource.DataSource;
                t.DateEntered = Datetime.Now;
                TS.SaveTicket(t);
    

在将 TicketBindingSource 转换为票证对象时出现错误。

有人知道如何进行这种转换吗?

谢谢

编辑:我不确定我是否对我的问题足够清楚,我认为这并不罕见。我要做的就是从我的数据绑定控件中获取数据,将其放入变量中,添加非数据绑定数据(egtDateEntered = DateTime.Now,如上例所示),然后将数据保存到数据库。

我已经在 VB.Net 中完成了这项工作,但 VB.Net 会自动将数据源转换为变量。这是VB.Net代码:

            Dim t = ticketBindingSource.DataSource
            t.DateEntered = DateTime.Now()
            TicketService.SaveTicket(t)

C# 不会自动执行此操作,它会引发错误。

【问题讨论】:

“出现错误”并没有告诉我们任何信息。它编译吗?它运行吗?你有例外吗?您需要告诉我们您收到的错误或消息。 【参考方案1】:

我不知道你到底想要什么,但这是一个很好的例子:

Insert, Update and Delete using Entity Framework

希望对你有帮助。

快乐的代码!

【讨论】:

感谢您的链接。这是一个很好的链接,但对我的问题没有帮助。【参考方案2】:

我不确定您的问题,但这两行没有意义:

Ticket t = new Ticket();
t = (Ticket)ticketBindingSource.DataSource;

您创建一个工单并将其分配给 t。

然后,您立即将 t 重新分配给其他东西。您创建的票证永远不会被使用并被垃圾回收。

【讨论】:

对不起,我已经编辑过了。我正在尝试将 ticketBindingSource 放入 Ticket 对象

以上是关于Winforms 中的数据绑定的主要内容,如果未能解决你的问题,请参考以下文章

在 WinForms 中对一组单选按钮进行数据绑定的最佳方法

WinForms 数据绑定和外键关系

Winforms MVVM数据绑定

Winforms DataGridView 数据绑定到复杂类型/嵌套属性

如何在更新数据源时让绑定的 winforms 控件刷新?

如何使用绑定到数据表的 c#winforms 保存我的 datagridview