в виде сетки не отображается результат

#c# #asp.net #sql #gridview #drop-down-menu

#c# #asp.net #sql #gridview #выпадающее меню

Вопрос:

Я хочу привязать 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();
            }
  

Комментарии:

1. Можете ли вы поместить сюда свое сообщение об ошибке?

Ответ №1:

Проблема заключается в вашем событии page_load, где вы присваиваете значение параметру. Когда вы нажмете кнопку, page_load снова вызовет page_load и ваше значение будет сброшено.

так и должно быть…

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

Или было бы лучше, если бы вам понравилось..

 if (selectProductdropdown.SelectedValue == "Books")
  

Ответ №2:

потому что вы, вероятно, удаляете опцию при каждой загрузке страницы.

Ответ №3:

Избегайте открытой переменной string option = «»;

Вместо этого определите то же самое в событии щелчка и получите выбранное значение там

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

Потому что при нажатии кнопки выпадающий список будет сброшен (при условии, что вы не показали здесь код привязки выпадающего списка)

Комментарии:

1. я перемещаю его в событие нажатия кнопки. но результат все равно не отображается.

Ответ №4:

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

Ответ №5:

Вы опустили эту строку:

 cmd.ExecuteReader();
  

Поместите его между операторами, вот так:

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