是否可以做以下工作:
我有以下数据表
=================================
ID || Width || Value ||
=================================
size-1 || 50 || ||
name-1 || 100 || ||
zip-1 || 50 || ||
size-2 || 50 || ||
name-2 || 100 || ||
zip-2 || 50 || ||
=================================我希望能够循环遍历datatable并使用textcontrolbox.text值更新value列
Session[sectionName] = test;
DataTable dt = (DataTable)Session[sectionName];
var strIDS = from p in dt.AsEnumerable()
select new
{
ID = p.Field<string>("ID")
};
foreach (var strID in strIDS)
{
TextBox tempBox = DynamicControlsHolder1.FindControl(strID.ID) as TextBox;
string val = tempBox.Text;
// This is where i want to be able to update the value column, but i can't figure out how to
// Can someone please help
}发布于 2013-08-13 19:29:42
可以将整个代码替换为:
foreach (DataRow Row in dt.Rows)
Row["Value"] = (DynamicControlsHolder1.FindControl(Row["ID"]) as TextBox).Text;发布于 2013-08-13 19:30:28
int i = 0;
foreach (var strID in strIDS)
{
TextBox tempBox = DynamicControlsHolder1.FindControl(strID.ID) as TextBox;
dt.Rows[i++]["Value"] = tempBox.Text;
}我认为您应该尝试在LINQ中进行更新,如下所示:
var totalRows = dt.AsEnumerable()
.Select(p=>
{
p["Value"] = (DynamicControlsHolder1.FindControl(p.Field<string>("ID")) as TextBox) ?? "";
return p;
}).Count();若要更新特定行,可以尝试以下操作:
var row = dt.AsEnumerable()
.Where(p=>p.Field<string>("ID") == "ID you want").FirstOrDefault();
if(row != null) row["Value"] = (DynamicControlsHolder1.FindControl(row["ID"].ToString()) as TextBox).Text;https://stackoverflow.com/questions/18217504
复制相似问题