2015-01-12 96 views
0

我有一個Gridview,其中包含人員的詳細信息, 並且還有一個文本框和搜索按鈕,其中當我輸入特定人員的姓名時 它應該顯示他自身細節以及來自thr網格視圖的標題。當按下按鈕時從網格顯示詳細信息

這裏是我的代碼..

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integrated Security=True");//DataBase Connection 

     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.CommandText = "SearchSp"; 
     cmd.Parameters.Add("@NAME", SqlDbType.VarChar).Value = TextBox4.Text.Trim(); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     GridView1.DataBind(); 
     cmd.Connection = con; 
     cmd.ExecuteNonQuery(); 
     con.Close();  
} 

請幫我...

+1

_Well_,是什麼問題究竟呢?您收到任何錯誤或異常消息?你可以請更具體嗎? –

+0

我的代碼是... con.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText =「SearchSp」; cmd.Parameters.Add(「@ NAME」,SqlDbType.VarChar).Value = TextBox4.Text.Trim(); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds,「ss」); GridView1.DataSource = ds.Tables [「ss」]; GridView1.DataBind(); cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close(); –

+0

我的錯誤是..Fill:SelectCommand.Connection屬性尚未初始化。 –

回答

0

我看到一些東西是錯誤的。

  • 在綁定gridview後,使用ExecuteNonQuery執行查詢。其實,你根本沒有綁定什麼。你不需要ExecuteNonQuery在這裏,因爲我認爲你的存儲過程返回一些數據而不是僅僅執行。
  • 使用ExecuteReader獲取所有值並將其分配給您的DataSource屬性。

SqlDataReader dr = cmd.ExecuteReader(); 
GridView1.DataSource = dr; 
GridView1.DataValueField = "someColumn"; 
GridView1.DataTextField = "someColumn"; 
GridView1.DataBind(); 
  • 使用using statement處置你的SqlConnectionSqlCommandSqlDataReader作爲最佳實踐。

using(SqlConnection con = new SqlConnection(CnnStr)) 
using(SqlCommand cmd = con.CreateCommand()) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "SearchSp"; 
    cmd.Parameters.Add("@NAME", SqlDbType.VarChar).Value = TextBox4.Text.Trim(); 
    using(SqlDataReader dr = cmd.ExecuteReader()) 
    { 
     GridView1.DataSource = dr; 
     GridView1.DataBind(); 
    } 
} 
+0

放置上面的代碼,它會在「DataValueField」和「DataTextField」上給出紅色下劃線標記 –

+0

@AdhithAshok刪除它們。 –

0

你不應該使用數據適配器,但這裏的固定代碼,它應該像這樣工作:

SqlConnection con = new SqlConnection(@"Data Source=ENTERKEY001;Initial Catalog=ThirdJanuaryDb;Integrated Security=True");//DataBase Connection 
     con.Open(); 
     try 
     { 
      SqlCommand cmd = con.CreateCommand(); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "SearchSp"; 
      cmd.Parameters.AddWithValue("@NAME", TextBox4.Text.Trim()); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 
     } 
     finally 
     { 
      con.Close(); 
     } 
+0

放置上面的代碼,它給了我一個錯誤消息,告訴「DataSource和DataSourceID都在'GridView1'上定義。刪除一個定義。」 –

+0

這意味着存在與數據衝突的已存在的列。檢查網格視圖。 –

+0

它不給我一個錯誤,它只是閃爍,並沒有什麼可以在網格上看到 –

相關問題