我希望在选择GridView
时以及用户从DataSource
中选择一个选项时,在运行时绑定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();
}
答案 0 :(得分:2)
问题出在page_load事件中,您要在其中为选项分配值。当您单击该按钮时,page_load将再次调用,您的值将重置。
它应该是......
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
option = selectProductdropdown.SelectedValue;
}
或者如果你愿意的话会更好..
if (selectProductdropdown.SelectedValue == "Books")
答案 1 :(得分:0)
因为您可能在每次加载页面时清空选项。
答案 2 :(得分:0)
避免使用公共变量 string option =“”;
而是在点击事件中定义相同内容并在那里获取所选值
option = selectProductdropdown.SelectedValue;// move to click event
因为当单击按钮时,将重置下拉列表(假设您未在此处显示下拉绑定代码)
答案 3 :(得分:0)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
option = selectProductdropdown.SelectedValue;
}
答案 4 :(得分:-1)
你已经省略了这一行:
cmd.ExecuteReader();
将它放在语句之间,如下所示:
SqlCommand cmd = new SqlCommand("SELECT * from books", conn);
cmd.ExecuteReader(); // <-- HERE
cmd.CommandType = CommandType.Text;