更改每个数据行上的列数据

Posted

技术标签:

【中文标题】更改每个数据行上的列数据【英文标题】:Changing the Column Data on every Data Row 【发布时间】:2016-11-09 05:29:19 【问题描述】:

我正在尝试访问DataSet 以更改DataSet 中每一行的列值。

我从数据库中提取了DataSet dsCustomers。从DataSet 中,我选择了DataSet 中的唯一表。 DataTable 表中有一个名为BillingDate 的列。

我正在尝试将 10 年添加到该列中的 DateTime 变量。我正在尝试对数据表中的每一行执行此操作。老实说,我不知道该怎么做或者我做错了什么。

我下面的代码是我掌握如何做到这一点的最佳尝试。欢迎任何帮助。

SqlConnection sqlConnCustomer = new SqlConnection(cString);
DataSet dsCustomer = new DataSet();
try

     dsCustomer = LearningData.SqlHelper.ExecuteDataset(sqlConnCustomer, "dbo.rptRecurringBilling_S");
     DataTable table = dsCustomer.Tables[0];
     int i = 0;
     foreach (DataRow row in table.Rows)
     
         row.AcceptChanges();
         row.BeginEdit();
         System.DateTime BillingDate = Convert.ToDateTime(table.Rows[i]["BillingDate"]);
         BillingDate = BillingDate.AddYears(10);
         row.EndEdit();
         row.AcceptChanges();
         i++;
     

【问题讨论】:

首先,将新值放回数据表中。如果您想使用更改更新数据库,您可能不想要AcceptChanges。 AcceptChanges 将清除更改后的 RowState 设置,以便 DA/DT 不会知道它已更新, 为什么不直接写个sql语句,可能会更快 【参考方案1】:

试试这个

foreach (DataRow row in ds.Tables[0].Rows)
        
            var ik = row["BillingDate"];
            System.DateTime BillingDate = Convert.ToDateTime(ik);
            BillingDate = BillingDate.AddYears(10);
            row["VALUE"] = BillingDate;
        

【讨论】:

以上是关于更改每个数据行上的列数据的主要内容,如果未能解决你的问题,请参考以下文章

同步访问屏幕行上的两个数据表

如何对特定行上的 numpy 数组进行排序,其他行相应更改? [复制]

Javascript - 单击表行上的事件以更改HTML元素

将数据属性放在 DataTables 1.10 上的行上

如何用行上的条件定义总和?

命令行上的数据科学第二版 二开始