[英]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.