【问题标题】:How to edit Row Value of Column in datatable [duplicate]如何编辑数据表中列的行值[重复]
【发布时间】:2014-09-07 21:32:12
【问题描述】:

我使用以下方法获得了我的数据表的值

DataTable table = new DataTable();
table = GetTable();
string expression;
expression = "B.Id = " + textBox1.Text;
DataRow[] foundRows;
foundRows = table.Select(expression);
for (int i = 0; i < foundRows.Length; i++)
{

    sno.Text = foundRows[i][1].ToString();
    name.Text = foundRows[i][2].ToString();
    dcn.Text = foundRows[i][3].ToString();
    stat.Text = foundRows[i][4].ToString();
}

那么我该如何更改foundRows[i][4]的值

【问题讨论】:

  • 你认为[0]是什么意思?
  • 我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
  • 仅当我愿意时。考虑到我在这里的时间比你长,而且我对它的工作原理有更好的了解。
  • @SyedAliNaqi:stackoverflow 必须由也是用户的版主管理。这些用户花费了大量的空闲时间 f.e.解决其他用户的问题,所以他们已经在做他们的工作。由于主持人工具,他们会收到通知,但他们通常无法回答问题本身。结论:不要责怪那些试图提供帮助的人,无论他们是否回答你的问题。
  • 另外,你已经彻底改变了这个问题。现在我已经接受的答案不再与它有任何关系(谢谢,在这种情况下总是问一个 new 问题),现在它甚至是重复的。

标签: c# datatable


【解决方案1】:

您已经在使用DataRow's indexer 来获取第一列,所以我不明白这个问题。如果您想访问第二个字段,请使用foundRows[i][1]:

MessageBox.Show(foundRows[i][1].ToString());

如果要循环所有字段:

for(int i = 0; i < foundRows.Length; i ++)
{
    for(int c = 0; c < table.Columns.Count; c++)
        MessageBox.Show(foundRows[i][c].ToString());
}

我建议使用强类型Field-extension 方法,它也支持可空类型。

MessageBox.Show(foundRows[i].Field<string>(0));

【讨论】:

  • 但是你能告诉我如何改变这个foundRows[i][1]的值
  • 您可以使用setter:foundRows[i][1] = "New Value"或使用SetFieldfoundRows[i].SetField(1, "New Value")
  • 我试过了,但它不起作用,值没有改变
  • @SyedAliNaqi:也许你需要问另一个问题,因为这应该可行。
  • @SyedAliNaqi:你不应该编辑你的问题,让我的回答对未来的读者毫无用处。而是按照我的建议提出另一个问题。
【解决方案2】:

使用这个

DataTable table = new DataTable();
table = GetTable();
string expression;
expression = "B.Id = " + textBox1.Text;
DataRow[] foundRows;
foundRows = table.Select(expression);
for (int i = 0; i < foundRows.Length; i++)
{

sno.Text = foundRows[i][1].ToString();
name.Text = foundRows[i][2].ToString();
dcn.Text = foundRows[i][3].ToString();
stat.Text = foundRows[i][4].ToString();
}


DataTable table = new DataTable();
    table = GetTable();
    string expression;
    expression = "B.Id = "+textBox1.Text;
    DataRow[] foundRows;
    foundRows = table.Select(expression);
    for(int i = 0; i < foundRows.Length; i ++)
    {
     if(button1.Text == "Make Preasent!")
     {
         foundRows[i][4] = true;
        table.AcceptChanges();
     }
     else
     {
         foundRows[i].SetField(4, false);
         table.AcceptChanges();
     }
    }

【讨论】:

    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2013-11-06
    • 2017-04-01
    相关资源
    最近更新 更多