DropDownList и событие OnSelectedIndexChanged
От: bezludny Украина  
Дата: 11.11.06 23:20
Оценка:
Всем доброго времени суток. Перечитал почти всю ветку. Поиск юзал.
Решение проблемы не нашел
Итак, имеется контролл:

<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
   <asp:ListItem Value="1">1</asp:ListItem>
   <asp:ListItem Value="1">2</asp:ListItem>
</asp:DropDownList>


Я так понимаю, что при выборе элемента должен срабатывать метод DropDownList1_SelectedIndexChanged:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
   Response.Write("sdasdsad");
   //MultiView1.ActiveViewIndex = DropDownList1.SelectedIndex;
}


Но этого не происходит!!! Смотрел сорс страницы, как и ожидал, ничего не повешено на событие выбора элемента в комбобоксе...

Недавно наткнулся на совет повесить все действия на кнопку сабмита. Но мне это не подходит. Объясните, будьте добры, что я не так делаю. Ткните плиз носом...
Re: DropDownList и событие OnSelectedIndexChanged
От: Аноним  
Дата: 12.11.06 00:08
Оценка:
Проверь функцию
...
private void InitializeComponent()
...

одна из линий кода должна быть примерно такая:

{
...
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
...
}

Если этой линии нет, то ничего и не должно срабатывать.
Также проверь, что свойство AutoPostBack у DropDownList1 контрола установлено в true. Если DropDownList1.AutoPostBack равен false, то тоже ничего не будет срабатывать.

Надеюсь это поможет. Удачи.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: DropDownList и событие OnSelectedIndexChanged
От: bezludny Украина  
Дата: 12.11.06 12:51
Оценка:
Здравствуйте, гост ь, Вы писали:

>Проверь функцию

>...
>private void InitializeComponent()
>...

>одна из линий кода должна быть примерно такая:


>{

>...
> this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
>...
>}

>Если этой линии нет, то ничего и не должно срабатывать.

>Также проверь, что свойство AutoPostBack у DropDownList1 контрола установлено в true. Если DropDownList1.AutoPostBack равен false, то тоже ничего не будет срабатывать.

>Надеюсь это поможет. Удачи.


>
данное сообщение получено с www.gotdotnet.ru

>ссылка на оригинальное сообщение


по поводу добавления нового евент хендлера. Это ведь с дотнет 1. А я на 2 пишу. Здесь такого нет, и вроде бы и быть не должно... А если поставить AutoPostBack="true", тогда страница перезагружается и все. В обработчик я не попадаю

содержимое моих файлов:
Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" 
 Trace="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server"
       AutoPostBack="true"
         OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
            <asp:ListItem Value="1">1</asp:ListItem>
            <asp:ListItem Value="1">2</asp:ListItem>
        </asp:DropDownList>
        <br />
        <asp:MultiView ID="MultiView1" runat="server">
            <asp:View ID="View1" runat="server">
            <asp:Label runat="server">View 1</asp:Label>
            </asp:View>
            <asp:View ID="View2" runat="server">
            <asp:Label runat="server">View 2</asp:Label>
            </asp:View>
        </asp:MultiView></div>
    </form>
</body>
</html>



Default.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 0;
    }
    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Write("sdasdsad");
        MultiView1.ActiveViewIndex = DropDownList1.SelectedIndex;
    }
}
Re: Re[2]: DropDownList и событие OnSelectedIndexChanged
От: Аноним  
Дата: 12.11.06 13:09
Оценка:
bezludny
...
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
if (!this.IsPostBack) {
        MultiView1.ActiveViewIndex = 0;
}
    }
...}

А так?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: DropDownList и событие OnSelectedIndexChanged
От: bezludny Украина  
Дата: 12.11.06 14:50
Оценка:
Здравствуйте, Артем1, Вы писали:

А> bezludny

А>...
А>public partial class _Default : System.Web.UI.Page 
А>{
А>    protected void Page_Load(object sender, EventArgs e)
А>    {
А> if (!this.IsPostBack) {
А>        MultiView1.ActiveViewIndex = 0;
А> }
А>    }
А>...}

А>А так?


А>
данное сообщение получено с www.gotdotnet.ru

А>ссылка на оригинальное сообщение


хех.
Вообщем, я похоже невнятно объясняю
Суть не в том, чтобы сменить вьюху. Суть в том, чтобы по выбору элемента в дропдаун листе я попадал в метод DropDownList1_SelectedIndexChanged. А этого не происходит. Даже в случае выставления аутопостбек на дропдаун.
Re: Re[2]: DropDownList и событие OnSelectedIndexChanged
От: Аноним  
Дата: 12.11.06 16:07
Оценка:
bezludny
по поводу добавления нового евент хендлера. Это ведь с дотнет 1. А я на 2 пишу. Здесь такого нет, и вроде бы и быть не должно... А если поставить AutoPostBack="true", тогда страница перезагружается и все. В обработчик я не попадаю
...
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="1">2</asp:ListItem>
</asp:DropDownList>
...


Вы правы — мой совет относился к 1.1 — с 2.0 я практически не работал. Но вы удачно привели код вашего примера и я повторил вашу проблему используя VS 2005. Посмотрите на ваш код приведенный выше — в обоих ListItem-ах величина Value равна 1-му. Конечно же при таком раскладе когда вы меняете что то в dropdown листе этот dropdown не генерит ничего, так как для обоих ListItem-ов величина Value равна 1. Просто измените ваш код на следующий:

...
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
</asp:DropDownList>
...

и вы начнете попадать в event . Надеюсь в этот раз я помог .
Удачи.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: DropDownList и событие OnSelectedIndexChanged
От: bezludny Украина  
Дата: 12.11.06 20:34
Оценка:
Здравствуйте, гост ь, Вы писали:

>Просто измените ваш код на следующий:


>...

> <asp:DropDownList ID="DropDownList1" runat="server"
> AutoPostBack="true"
> OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
> <asp:ListItem Value="1">1</asp:ListItem>
> <asp:ListItem Value="2">2</asp:ListItem>
> </asp:DropDownList>
>...

>и вы начнете попадать в event . Надеюсь в этот раз я помог .

>Удачи.

Спасибо огромное! Очень приятно, что есть люди, готовые помочь
Как говорит наш препод по латыни: "Честь тобі і слава!"
Благодарности + респект.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.