2011-04-13 84 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; 
}