2012-08-13 141 views
0

我在ASP.NET页面中有一个简单的搜索页面,我正在填充基于SQL Query的数据集。
数据集未被填充

  con.Open();  
      cmd.ExecuteNonQuery(); 
      SqlDataAdapter da = new SqlDataAdapter(); 
      da.SelectCommand = cmd; 
      DataSet ds = new DataSet(); 
      if (ds.Tables.Count > 0) 
      { 
       if (ds.Tables[0].Rows.Count > 0) 
       { 
        da.Fill(ds, "Emp"); 
        GridView1.DataSource = ds; 
        GridView1.DataBind(); 
       } 

      } 
      else 
      { 
       Label2.Text = "Data not found"; 

      } 
      con.Close(); 

但即使搜索项存在,我得到这个结果作为“数据未找到”。为什么是不是执行if语句?

回答

1

当别人建议你需要移动一行代码如下所示:

 con.Open();  
     cmd.ExecuteNonQuery(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand = cmd; 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "Emp"); // SEE THIS LINE! 
     if (ds.Tables.Count > 0) 
     { 
      if (ds.Tables[0].Rows.Count > 0) 
      { 

       GridView1.DataSource = ds; 
       GridView1.DataBind(); 
       Label2.Text = string.Empty; 
      } 

     } 
     else 
     { 
      GridView1.DataSource = null; 
      GridView1.DataBind(); 
      Label2.Text = "Data not found"; 

     } 
     con.Close(); 
+0

感谢它的工作..一个更多的问题..当我输入表中存在的值,它返回值..当我在文本框中输入的值不在数据库表中,我收到消息 - “找不到数据”,但之前搜索的GridView仍然存在。 – Girish 2012-08-13 11:38:48

+0

查看我的更新答案以解决第二个问题! (并投票的答案了!); O) – bUKaneer 2012-08-13 11:46:25

+0

曾为非常感谢..这里的最后一个疑问。当我进入不相关的文字,它给“找不到数据”错误。现在,当我进入的Java这是存在于数据库表,它与先前的消息重叠.. – Girish 2012-08-13 11:53:38

0

你缺少

dataadapter.fill(ds) 
+0

我已经做到了原样'DA。填充(ds,“Emp”);' – Girish 2012-08-13 11:27:48

+0

你也可以这样做,如果它解决了你的问题,你能否接受答案? – 2012-08-13 11:33:34

0

很可能不工作,因为你已经执行之前试图填补数据集查询。尝试删除cmd.ExecuteNonQuery();.另外,Non Query命令不会返回任何结果。确保你的查询确实返回结果。

+0

那么,如果我删除if else条件,代码会得到执行。这是工作..当我执行if..else,“如果”条件不工作.. – Girish 2012-08-13 11:24:31

0

喜请尽量将其工作为我的GridView

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConectionString"].ConnectionString); 

      SqlCommand cmd = new SqlCommand("Select * from Tbl_Employee", con); 

      SqlDataAdapter da = new SqlDataAdapter(cmd); 

      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      if (ds.Tables.Count > 0) 
      { 
       if (ds.Tables[0].Rows.Count > 0) 
       { 
        gv1.DataSource = ds.Tables[0]; 
        gv1.DataBind(); 
       } 
      } 
+0

有你试试这个? – 2012-08-13 11:51:49