【问题标题】:How to check if value from TextBox exists in DataSet?如何检查来自 TextBox 的值是否存在于 DataSet 中?
【发布时间】:2016-08-18 03:06:14
【问题描述】:

这是我项目中的代码示例。 DataSet 存储authors first name and last name 的值,具体取决于特定的书本ID。但是,一本书可以有多个作者。当用户在 TextBoxes 中键入一些值并按下保存按钮时,应启动两种方法之一。如果文本框和数据集中的值相同,则第一种方法更新数据库中现有的作者记录。如果不是 - 应该触发第二种方法,并且应该将新的作者记录添加到数据库中。

DataSet ds = GetData(queryString);
Autor autor = new Autor();

foreach (DataTable dt in ds.Tables)
{
    foreach (DataRow dr in dt.Rows)
    {
      string firstName = dr["First_name"].ToString();
      string lastName = dr["Last_name"].ToString();
      if (firstName.Trim().ToUpper() == txtFirstName.Text.Trim().ToUpper() && lastName.Trim().ToUpper() == txtLastName.Text.Trim().ToUpper())
      {
        //updating existing author record in the database         
        Autor.UpdateInDatabase(autor);                      
      }
      else
      {
       //adding new author record in the database         
        Autor.AddToDatabase(autor);  
        break;                
      }
    }
}

此代码仅在匹配值位于数据集的第一行时才有效 - 这显然是错误的。谁能帮助我了解如何遍历数据集、比较所有结果并根据结果 - 选择正确的方法?

【问题讨论】:

  • 从 else 条件中删除你的 break 看看会发生什么

标签: c# asp.net visual-studio-2015


【解决方案1】:

只需添加一个布尔标志。

bool itemFound = false;
foreach (DataTable dt in ds.Tables)
{
   foreach (DataRow dr in dt.Rows)
   {
      string firstName = dr["First_name"].ToString();
      string lastName = dr["Last_name"].ToString();
      if (firstName.Trim().ToUpper() == txtFirstName.Text.Trim().ToUpper() && lastName.Trim().ToUpper() == txtLastName.Text.Trim().ToUpper())
      {  
        itemFound = true;
        break;                                        
      }              
   }
 }

if(itemFound)
    Autor.UpdateInDatabase(autor); 
else
    Autor.AddToDatabase(autor); 

【讨论】:

  • 当然。很高兴帮助:)
猜你喜欢
  • 2020-10-26
  • 1970-01-01
  • 2010-11-14
  • 2017-03-17
  • 2020-03-31
  • 2011-06-16
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多