0

是否可以执行以下操作:

我有以下数据表

=================================
ID      ||   Width  ||  Value  ||
=================================
size-1  ||   50     ||         ||
name-1  ||   100    ||         ||
zip-1   ||   50     ||         ||
size-2  ||   50     ||         ||
name-2  ||   100    ||         ||
zip-2   ||   50     ||         ||
=================================

我希望能够使用 textcontrolbox.text 值循环遍历数据表并更新值列

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

        }
4

2 回答 2

3

您的整个代码可以替换为:

foreach (DataRow Row in dt.Rows)
    Row["Value"] = (DynamicControlsHolder1.FindControl(Row["ID"]) as TextBox).Text;
于 2013-08-13T19:29:42.507 回答
3
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;
于 2013-08-13T19:30:28.190 回答