Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с DropDownList

422
10 мая 2006 года
Dimarik
181 / / 12.02.2005
На странице имеется DropDownList. По умолчанию в нём выбран первый элемент из списка. Выбираю какой-нибудь другой и нажимаю отправить. Отправляется не тот который выбран, а первый, т.е. который по умолчанию. В чём проблема?
4.0K
11 мая 2006 года
vesna
71 / / 04.10.2005
Цитата:
Originally posted by Dimarik
На странице имеется DropDownList. По умолчанию в нём выбран первый элемент из списка. Выбираю какой-нибудь другой и нажимаю отправить. Отправляется не тот который выбран, а первый, т.е. который по умолчанию. В чём проблема?



А на код можно взглянуть?

422
11 мая 2006 года
Dimarik
181 / / 12.02.2005
Цитата:
Originally posted by vesna
А на код можно взглянуть?



protected void Page_Load(object sender, EventArgs e)
{
SqlConnection thisConnection = new SqlConnection(@" Data Source=BAZA; Persist Security Info=False; User ID=asp; Server=BAZA; Initial Catalog=baza;");
thisConnection.Open();
SqlCommand cmd = new SqlCommand();

cmd.CommandText = "mapforum2";
cmd.Connection = thisConnection;

SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds, "Table");
this.GridView1.DataSource = ds;
this.GridView1.DataBind();


adapter.Dispose();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select name, id from forum";
SqlDataAdapter adapter2 = new SqlDataAdapter(cmd);
DataSet ds2 = new DataSet();
adapter2.Fill(ds2, "Table");
this.DropDownList1.DataSource = ds2;
this.DropDownList1.DataTextField = "name";
this.DropDownList1.DataValueField = "id";
this.DropDownList1.DataBind();
adapter2.Dispose();
ds2.Dispose();
Response.Write(DropDownList1.SelectedItem.Value);
thisConnection.Dispose();


}
protected void Button1_Click(object sender, EventArgs e)
{

if (IsPostBack)
{
int p = Convert.ToInt32(DropDownList1.SelectedItem.Value);
SqlConnection thisConnection = new SqlConnection(@" Data Source=BAZA; Persist Security Info=False; User ID=asp; Server=BAZA; Initial Catalog=baza;");
thisConnection.Open();
SqlCommand cmd = new SqlCommand();

cmd.CommandText = "Insert into part (id_forum, name) values("+p+", '" +this.TextBox1.Text+"')";

cmd.Connection = thisConnection;
cmd.ExecuteNonQuery();
Response.Redirect("http://www.bla.bla.ru/Manage/manage_forum.aspx");

}
}
protected void Button2_Click(object sender, EventArgs e)
{
if (IsPostBack)
{
SqlConnection thisConnection = new SqlConnection(@" Data Source=BAZA; Persist Security Info=False; User ID=asp; Server=BAZA; Initial Catalog=baza;");

thisConnection.Open();
SqlCommand cmd = new SqlCommand();

cmd.CommandText = "Insert into forum (name) values('"+ this.TextBox2.Text + "')";
cmd.Connection = thisConnection;
cmd.ExecuteNonQuery();
Response.Redirect("http://www.bla.bla.ru/Manage/manage_forum.aspx");

}

}

4.0K
11 мая 2006 года
vesna
71 / / 04.10.2005
А что-нибудь вставляется?
У тебя просто if написан так:
 
Код:
if (IsPostBack)
{...}


надо вроде так:
 
Код:
if (!IsPostBack)
{...}

То есть работать будет только при условии, что это был не рефреш.
TextBox1, TextBox2 - это кто такие?
273
12 мая 2006 года
3A3-968M
1.2K / / 22.12.2005
Это распространённая ошибка. Я один раз себе чуть лоб не расшиб над аналогичной задачей, пока не прочитал Lifetime of ASP.NET objects. Всё дело во времени жизни. Когда данные в dropDownList выбираются, то значение SelectedItem.Value действительно меняется. Затем форма после события засылается обратно на сервер. Там страница загружается и вызывается событие Page_Load, в котором у тебя занового происходит заполнение dropDownList и теряется выбранное значение, затем срабатывает другой код обработки других событий.
Я вышел из этой ситуации так:
protected void Page_Load(object sender, EventArgs e)
{
...
if(this.DropDownList1.Items.Count==0)
{
this.DropDownList1.DataSource = ds2;
this.DropDownList1.DataTextField = "name";
this.DropDownList1.DataValueField = "id";
this.DropDownList1.DataBind();
}
И IsPostBack не причём здесь. Надеюсь поможет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог