网格视图未显示结果

时间:2011-04-13 06:45:44

标签: c# asp.net sql gridview drop-down-menu

我希望在选择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();
            }

5 个答案:

答案 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;