【问题标题】:C# - add new row to datasetC# - 向数据集添加新行
【发布时间】:2011-04-24 09:25:00
【问题描述】:

我有这个代码:

    DataRow myNewRow;
    myNewRow = hRAddNewDataSet.Vication.NewRow();
    myNewRow["EmployeeID"] = Convert.ToInt32(employeeIDTextBox.Text);
    myNewRow["VicationDate"] = vicationDateDateTimePicker.Value;
    myNewRow["VicationSubject"] = vicationSubjectTextBox.Text;
    myNewRow["VicationType"] = Convert.ToInt32(vicationTypeComboBox.SelectedValue);
    myNewRow["Time"] = Convert.ToInt32(timeTextBox.Text);
    myNewRow["VicationAs"] = Convert.ToInt32(vicationAsComboBox.SelectedValue);
    myNewRow["StatementNo"] = statementNoTextBox.Text;
    myNewRow["StatementDate"] = statementDateDateTimePicker.Value;
    myNewRow["Info"] = infoTextBox.Text;
    hRAddNewDataSet.Vication.Rows.Add(myNewRow);

当我运行此代码时,它会根据需要添加新行,但它也会根据值更新当前行

vicationBindingSource.Position

我该如何解决这个问题?

【问题讨论】:

  • 可能想将vication重构为vacation
  • @B Tyler:我为什么要这么做??
  • “更新当前行”到底是什么意思?将另一行设置为当前行?更新当前行中的值?
  • @DarkSquirrel42:是的,它会更新当前行中的值
  • 表单上的控件和绑定源之间是否存在数据绑定?

标签: c# dataset


【解决方案1】:

由于存在数据绑定,因此您对控件绑定属性的所有更改都将写入数据源(通常在成功验证控件之后)

因此,当您输入新行的值时,实际上是首先更改当前行的值

您应该使用BindingSourceAddNew() 方法添加您的行

【讨论】:

  • 我应该在哪里调用这个方法?这个方法不需要任何参数,那么我应该在哪里添加呢?
  • 好吧,我不知道你的应用程序,但是当你调用 AddNew() 时,一个新行将插入到你的数据表中,这个新行将成为当前行。所以你可能想把这个调用放在一个点击处理程序中,绑定到一个按钮的点击事件
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 2011-03-08
  • 2021-12-31
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2019-01-15
相关资源
最近更新 更多