2014-01-17 3 views
0

У меня есть таблица DataTable и несколько элементов управления TextBox. Когда я нажимаю кнопку, мне нужно изменить столбец «Значение», где ID соответствует текстовому вводу.C# DataTable редактирует ячейку в определенной строке с Linq

DataTable table = new DataTable(); 
table.Columns.Add("ID", typeof(string)); 
table.Columns.Add("Name", typeof(string)); 
table.Columns.Add("Value", typeof(decimal)); 
table.Columns.Add("Unit", typeof(string)); 

string myId=txtId.Text; 
decimal myValue=txtValue.Text; 

Я знаю, как проверить, существует ли идентификатор в таблице. Как изменить значение поля «Значение»?

bool contains = table.AsEnumerable().Any(row => myID == row.Field<string>("ID")); 
if (contains == true) 
{ 
    //Change the value of row.Field<string>("Value")!! 
} 

Благодарим за помощь.

EDIT: Вот мое решение:

string s = "ID='" + myId + "'"; 
DataRow dr = table.Select(s).FirstOrDefault(); 
dr["Value"] = myValue; 

ответ

1

Попробуйте это:

DataRow dr = table.Select("ID=myId").FirstOrDefault(); 
dr["Value"] = "your value"; 
+0

пытался ваше решение, но он выдает ошибку: Не удается найти столбец [MyId]. – user1080533

+0

Думаю, он имел в виду - myId - это Ид, который вы ищете. и почему ваш идентификатор поступает из вашей базы данных? –

+0

NWM решил это :) На самом деле это не идентификатор, это код продукта (который может включать числа и буквы, вот почему это строка) – user1080533

Смежные вопросы