繁体   English   中英

绑定的文本框不显示添加新行

[英]bound text boxes do not show adding new row

我正在使用一个datagridview,bindingnavigator和连接到绑定源(在代码中设置)的文本框。 当我在网格中选择行时,内容显示在文本框中,一切都很好。

txtQty.DataBindings.Add("Text", bsInvoiceDetails, "Detail_Quantity");

接下来,我在绑定导航器上单击添加。 它将空白行添加到数据网格,这很好,但不会清除文本框。 网格中突出显示的行是另一行。 当我手动选择新行时,文本框仍然不会更改。

如果在网格中选择新行的情况下输入texbox,则实际上会更改不同的行值。

我不知道为什么这是我们的解决方法。

  • 救命

更新:

运行查询,返回数据表...将其附加到数据集...数据集是bindingsource的数据源...

dsInvoiceDetails = new 
dsInvoiceDetails.Tables.Add(dtInvoiceDetails);

bsInvoiceDetails.DataSource = dsInvoiceDetails;
bsInvoiceDetails.DataMember = "Invoice_Detail";

将网格和绑定导航器连接到bindingsource的代码...

gridInvoiceDetails.DataSource = bsInvoiceDetails;
bnInvoiceDetails.BindingSource = bsInvoiceDetails;

当选择网格行时,绑定源将“自动”填充上方的文本框。 完美运作。

绑定导航器有一个很酷的按钮来添加行。 点击那个。 它将向网格添加一行。 大。 但是,当选择新行时,绑定的文本框将保持不变。

我可能需要处理bindingsource上的“ AddingNew”事件。

希望可以帮助您进一步定义问题。

谢谢您的帮助。

自从我问了这个问题已经很长时间了,但是它继续受到关注,因此这里有一些其他信息。 我基本上创建了一个发票明细的新实例,并将其分配给事件NewObject。

所以我确实添加了一个在添加新行时触发的事件:

        bsInvoiceDetails.AddingNew += new AddingNewEventHandler(bsInvoiceDetails_AddingNew);

这是触发的代码:

    void bsInvoiceDetails_AddingNew(object sender, AddingNewEventArgs e)
    {
        try
        {
            InvoiceDetail id = new InvoiceDetail();
            id.InvoiceID = invoice.InvoiceID;   // Make sure we are hooked to this invoice.
            id.DetailDate = DateTime.Today;
            id.DetailQuantity = 0;
            id.DetailRate = 0;
            id.DetailTotal = 0;
            id.DetailDescription = "* New Detail Description *";

            e.NewObject = id;
        }
        catch (Exception ex)
        {
            ErrorManager em = new ErrorManager(ex, "InvoiceEditForm.cs", "bsInvoiceDetails_ListChanged", "Adding a new detail item", "sql");
        }
    }

我认为这是解决此问题的全部措施。 如果这不能帮助您解决问题,请随时发布另一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM