为什么我的数据表行中的值未更新? [英] Why does the value not get updated in my datatable row?
本文介绍了为什么我的数据表行中的值未更新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有此代码
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屋!
查看全文