c# - 为什么我的数据表行中的值没有更新?

标签 c# datatable

我有这个代码

foreach (DataRow row in dt.Rows)
{
  Debug.WriteLine("Start of Row");
  for (int i = 0; i < row.ItemArray.Length; i++) 
  {
    string val = row.ItemArray[i].ToString();
    row.ItemArray[i] = "My New Value";

    Debug.WriteLine("val: {0}, new: {1}", val, row.ItemArray[i].ToString());
  }
}

但该值永远不会更新。我不确定为什么。

Start of Row
val: 2/02/2012, new: 2/02/2012
val: ac, new: ac
val: ac, new: ac
val: 515.00, new: 515.00

编辑

再试几次

  for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow row = dt.Rows[i]; 
                for (int x = 0; x < row.ItemArray.Length; x++)
                {
                    string val = row.ItemArray[x].ToString();
                    row.ItemArray.SetValue("My New Value", x);

                    Debug.WriteLine("val: {0}, new: {1}", val, row.ItemArray[x].ToString());
                }
            }

val: 2/02/2012, new: 2/02/2012
val: ac, new: ac
val: ac, new: ac
val: 515.00, new: 515.00

再试一次

 for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow row = dt.Rows[i]; 
                for (int x = 0; x < row.ItemArray.Length; x++)
                {
                    string val = row.ItemArray[x].ToString();
                    row[i] = "My New Value";

                    Debug.WriteLine("val: {0}, new: {1}", val, row.ItemArray[x].ToString());
                }
            }

给我

System.Data.ReadOnlyException was unhandled by user code
  Message=Column 'Date' is read only.
  Source=System.Data
  StackTrace:
       at System.Data.DataRow.set_Item(DataColumn column, Object value)
       at System.Data.DataRow.set_Item(Int32 columnIndex, Object value)
       at CCRecomendator.Framework.Services.CreditCardRecommendatorService.ParseTransactions(Stream stream) in
       at CCRecomendator.WebUI.Controllers.RecommendController.UploadTransactions(HttpPostedFileBase file) in
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: 

所以也许这些东西是只读的还是什么?

我正在使用 filehelpers它正在创建数据表及其行。不确定它是否正在做一些时髦的事情阻止我做我想做的事情。

最佳答案

而不是 ItemArray,只需访问索引:

foreach (DataRow row in dt.Rows)
{
  Debug.WriteLine("Start of Row");
  for (int i = 0; i < row.ItemArray.Length; i++) 
  {
    string val = row[i].ToString();
    row[i] = "My New Value";

    Debug.WriteLine("val: {0}, new: {1}", val, row[i].ToString());
  }
}

关于c# - 为什么我的数据表行中的值没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9219717/

相关文章:

javascript - 在单击第二个按钮之前,AngularJS 数据不会刷新

javascript - 需要从 onItemClick 事件中找出 Webix 数据表单元格的内容

c# Tcp 和套接字之间的区别?

c# - 为什么按年排序不起作用?

c# - Xamarin 不断出现多个不同错误

c# - 使用%typemap进行SWIG和多态C#

java - Primefaces 数据表单元格编辑不更新

validation - Richfaces Datatable 在验证失败时丢失提交的输入值

html - 删除DataTable的下边框

c# - 等待下载完成