2011-04-13 89 views
-1

我想在運行時綁定GridViewDataSource被選中,並且當用戶從DropDownList選擇一個選項。但是選定的表或連接沒有正確完成。 請檢查下面的代碼,並給我適當的解決方案。網格視圖不顯示結果

public partial class index : System.Web.UI.Page 
    { 
     SqlConnection conn = new SqlConnection(); 
     string option = ""; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      option = selectProductdropdown.SelectedValue; 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      Label2.Text = option; 
      if (option == "Books") 
      { 

       Label3.Text = option; 
       conn.ConnectionString = ConfigurationManager.ConnectionStrings["booksconnectionstring"].ConnectionString; 
       conn.Open(); 
       SqlCommand cmd = new SqlCommand("SELECT * from books", conn); 
       cmd.CommandType = CommandType.Text; 

       SqlDataAdapter reader = new SqlDataAdapter(cmd); 

       DataSet s = new DataSet(); 
       reader.Fill(s); 
       GridView1.DataSource = s; 
       GridView1.DataBind(); 
       conn.Close(); 
      } 
+1

你可以在這裏把你的錯誤信息? – 2011-04-13 06:53:01

回答

0

因爲您可能在每次頁面加載時清空選項。

0

避免使用公共變量string option =「」;

而是定義了相同的Click事件,並獲得選擇的值有

option = selectProductdropdown.SelectedValue;// move to click event 

因爲單擊該按鈕時,下拉菜單會被重置(假設你沒有在這裏顯示的下拉綁定代碼)

+0

我將它移動到按鈕單擊事件。但仍然沒有顯示出結果。 – Manish 2011-04-13 07:04:53

2

問題出現在您的page_load事件中,您正在爲選項分配值。當你點擊按鈕時,page_load會再次調用,你的值將被重置。

應該...

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) 
     option = selectProductdropdown.SelectedValue; 
    } 

或者如果你喜歡它會更好..

if (selectProductdropdown.SelectedValue == "Books") 
-1

您遺漏了這行:

cmd.ExecuteReader(); 

將它之間的聲明,像這樣:

SqlCommand cmd = new SqlCommand("SELECT * from books", conn); 
cmd.ExecuteReader(); // <-- HERE 
cmd.CommandType = CommandType.Text; 
+0

試試這個你錯過了這兩個代碼之間的代碼 – 2011-04-13 07:16:48

0
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
     option = selectProductdropdown.SelectedValue; 
}