#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;