2

在我的项目中,有两个文本框txtNametxtPopulation一个按钮btnClick。每当用户单击 时btnClick,数据集的“人口”列中的dsDetails值应由 中的值更新txtPopulation,其中“名称”列等于txtName。我知道这可以使用rowfilterorselect但我不知道要在其中实现什么。请不要linq

在此处输入图像描述 目前,我正在做这样的事情..(工作

for (int intCount = 0; intCount < dsDetails.Tables[0].Rows.Count; intCount++)
{
    if (lblCountryName.Text.Equals(dsDetails.Tables[0].Rows[intCount][0].ToString()))
    {
         dsDetails.Tables[0].Rows[intCount][3] = txtPopulation.Text;
    }
}
4

2 回答 2

12

您需要调用.AcceptChanges()DataTable 以便将更改提交给集合,如下所示:

for (int intCount = 0; intCount < dsDetails.Tables[0].Rows.Count; intCount++)
{
    if (lblCountryName.Text.Equals(dsDetails.Tables[0].Rows[intCount][0].ToString()))
    {
        dsDetails.Tables[0].Rows[intCount][3] = txtPopulation.Text;
    }
}  

dsDetails.Tables[0].AcceptChanges();

使用选择行过滤器

您可以使用.Select行过滤器来定位您的列,如下所示:

foreach (DataRow row in dsDetails.Tables[0].Select("Name = '" + txtName.Text + "'"))
{
    row[3] = txtPopulation.Text;
}

dsDetails.Tables[0].AcceptChanges();
于 2012-10-22T09:49:01.833 回答
2
DataRow[] dr = dsDetails.Tables[0].Select("Something='"+lblCountryName.Text+"'");
if(dr.Length > 0)
{
 dr[0][0] = "ChangeValue";//Datarow is reference to datatable it will automatically update the datatable values
}
dsDetails.Tables[0].AcceptChanges();
于 2012-10-22T09:54:09.013 回答