首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用datarow循环的数据表更新

不使用datarow循环的数据表更新
EN

Stack Overflow用户
提问于 2013-08-13 19:26:48
回答 2查看 4.4K关注 0票数 0

是否可以做以下工作:

我有以下数据表

代码语言:javascript
复制
=================================
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列

代码语言:javascript
复制
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

        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 19:29:42

可以将整个代码替换为:

代码语言:javascript
复制
foreach (DataRow Row in dt.Rows)
    Row["Value"] = (DynamicControlsHolder1.FindControl(Row["ID"]) as TextBox).Text;
票数 3
EN

Stack Overflow用户

发布于 2013-08-13 19:30:28

代码语言:javascript
复制
int i = 0;
foreach (var strID in strIDS)
    {
        TextBox tempBox = DynamicControlsHolder1.FindControl(strID.ID) as TextBox;
        dt.Rows[i++]["Value"] = tempBox.Text;
    }

我认为您应该尝试在LINQ中进行更新,如下所示:

代码语言:javascript
复制
var totalRows = dt.AsEnumerable()                  
                  .Select(p=>                     
                  {
                     p["Value"] = (DynamicControlsHolder1.FindControl(p.Field<string>("ID")) as TextBox) ?? "";
                     return p;
                  }).Count();

若要更新特定行,可以尝试以下操作:

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18217504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档