Получить выбранное значение dropdownlist заполненного с ajax

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Получить выбранное значение dropdownlist заполненного с ajax

Сообщение Создатель » 06.08.2007 (Пн) 20:11

Наверное уже почти все здесь читали эту статью по применению ajax'а в asp .net( http://www.aspnetmania.com/Articles/Article/77.html )

В статье показан пример заполнения выпадающего списка используя ajax. Пользователь выбирает производителя машины, а список автоматически заполняется моделями.
Вот и у меня руки дошли. Напиcал пример по образу и подобию.Все работает. Вот только как получить уже на сервере выбранное пользователем значение из этого динамически заполненного списка ?

Что нибудь типа [дин.список].Text естественно ничего не дает(
Заранее благодарен.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 09.08.2007 (Чт) 22:15

Почему не дает? Браузер должен отправлять на сервер пару параметр=значение, где значение - выбранный текст в выпадающем списке.
Кстати, лучше использовать Ajax Control Toolkit (на http://ajax.asp.net поищи).
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 15.08.2007 (Ср) 18:03

Кхм...тогда возможно я что-то не так делаю...Вот несколько укороченный код, который приводится в самой статье:
Код: Выделить всё
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
       
        BindModels(evArg)
        evArg = String.Empty

        Dim i As Integer

        For i = 0 To ddlModel.Items.Count - 1
            evArg &= ddlModel.Items(i).Value & ";"
        Next

        Return evArg
    End Function


Код: Выделить всё
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        evArg = eventArgument

    End Sub


Код: Выделить всё
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim argClientFunction As String = _
        "document.all['" + ddlManufacturers.ClientID + "'].options(document.all['" + ddlManufacturers.ClientID + "'].selectedIndex).value"

        Dim cScript As String = ClientScript.GetCallbackEventReference(Me, argClientFunction, "CallbackFunction", "'CallbackContext'", "null", False)

        ddlManufacturers.Attributes.Add("onchange", cScript & ";return false;")

        If Not IsPostBack Then
            BindManufacturers()
        End If


        Dim scr As String = "<script language=javascript>"
        scr += "function CallbackFunction(callbackResult, callbackContext)"
        scr += "{"
        scr += "    var ddlModel = document.all['" + ddlModel.ClientID + "'];"
        scr += "    var l = ddlModel.options.length;"
        scr += "    for(var i=0; i<l; i++)"
        scr += "        ddlModel.options.remove(0);"
        scr += "    var models = callbackResult.split(';');"
        scr += "    for(var i=0; i<models.length; i++)"
        scr += "    {"
        scr += "        var oOption = document.createElement(""OPTION"");"
        scr += "        oOption.text = models[i];"
        scr += "        oOption.value = models[i];"
        scr += "        ddlModel.options.add(oOption);"
        scr += "    }"
        scr += "    return false;"
        scr += "}"
        scr += "</script>"
        RegisterStartupScript("scr" + Me.ClientID, scr)

    End Sub


Код: Выделить всё
    Private Sub BindManufacturers()
        ddlManufacturers.Items.Add(New ListItem("Mercedes"))
        ddlManufacturers.Items.Add(New ListItem("BMW"))
    End Sub


Код: Выделить всё
    Private Sub BindModels(ByVal manufacturer As String)
        Select Case manufacturer

            Case "Mercedes"
                ddlModel.Items.Clear()
                ddlModel.Items.Add(New ListItem("S350"))
                ddlModel.Items.Add(New ListItem("S500"))
                ddlModel.Items.Add(New ListItem("S600"))
                ddlModel.Items.Add(New ListItem("CLK"))

            Case "BMW"
                ddlModel.Items.Clear()
                ddlModel.Items.Add(New ListItem("model 3"))
                ddlModel.Items.Add(New ListItem("model 5"))
                ddlModel.Items.Add(New ListItem("model 7"))
                ddlModel.Items.Add(New ListItem("X3"))
                ddlModel.Items.Add(New ListItem("X5"))

        End Select

    End Sub


Далее на форму добавляю кнопку.
Код: Выделить всё
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Response.Write(ddlModel.Text)
    End Sub


В итоге, при нажатии, ничего не меняется ((

Алексей Немиро
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 05.01.2008 (Сб) 5:52
Откуда: Kbyte.Ru

Сообщение Алексей Немиро » 05.01.2008 (Сб) 6:28

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Write(ddlModel.SelectedValue)
End Sub


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList