为什么我的数据表行中的值未更新? [英] Why does the value not get updated in my datatable row?

查看:56
本文介绍了为什么我的数据表行中的值未更新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有此代码

  foreach(dt.Rows中的DataRow行)
{
Debug .WriteLine(行的开始);
for(int i = 0; i< row.ItemArray.Length; i ++)
{
字符串val = row.ItemArray [i] .ToString();
row.ItemArray [i] =我的新值;

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

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

 行开始
val:2/02/2012,新:2/02 / 2012
val:ac,新:ac
val:ac,新:ac
val:515.00,新: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 ++)
{
字符串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,新:2/02/2012
val:ac,新:ac
val: ac,新:ac
val:515.00,新:515.00

另一种尝试

 为(int i = 0; i< dt.Rows.Count; i ++)
{
DataRow行= dt.Rows [i];
for(int x = 0; x< row.ItemArray.Length; x ++)
{
字符串val = row.ItemArray [x] .ToString();
row [i] =我的新价值;

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

请给我

  System.Data.ReadOnlyException未通过用户代码
处理。Message =列'Date'是只读的。
Source = System.Data
StackTrace:System.Data.DataRow.set_Item(DataColumn列,Object value)处的
System.Data.DataRow.set_Item(Int32 columnIndex,对象值)CCRecomendator.Framework.Services.CreditCardRecommendatorService.ParseTransactions(Stream stream)在CCRecomendator.WebUI.Controllers.RecommendController.UploadTransactions(HttpPostedFileBase file)在
处的
在lambda_method(Closure, System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller,Object [] parameters)的ControllerBase,Object [])
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary`2)参数)System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary`2参数)中的
System.Web.Mvc.ControllerActionInvoker中的
。 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter过滤器,ActionExecutingContext preContext,Func`1延续)上的MethodWithFilters> b__12()

InnerException:


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



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

解决方案

代替ItemArray,只是访问索引:

  foreach(dt.Rows中的DataRow行)
{
Debug.WriteLine( 行开始);
for(int i = 0; i< row.ItemArray.Length; i ++)
{
string val = row [i] .ToString();
row [i] =我的新价值;

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


I have this code

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());
  }
}

yet the value never gets updated. I am not sure why.

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

Edit

Some more tries

  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

Another try

 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());
                }
            }

gives me

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: 

So maybe the stuff is readonly or something?

I am using filehelpers it is creating the datatable and it's rows. Not sure if it is doing something funky that is stopping me from doing what I want to do.

解决方案

Instead of ItemArray, just access the index:

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());
  }
}

这篇关于为什么我的数据表行中的值未更新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆