powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Placeholder и Databind
6 сообщений из 6, страница 1 из 1
Placeholder и Databind
    #34054078
Kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Я каждый раз при загрузке страницы динамически добавляю контролы DropDownList в Placeholder.
Там же после создания контрола перед непосредственным добавлением его в Placeholder я вбиваю в него данные, ну дак вот, если я сделаю это так:
droplist.items.add("Proba1")
droplist.items.add("Proba2")
то всё работает отлично, то есть, я могу на странице выбрать любое выпадающее из списка значение из этих контролов и потом сколько угодно раз обновлять страницу (например наживать кнопку на форме) и это выбранное значение в списке так и будет выбранным, НО если я буду вбивать значения так:
dim dtbl as new data.datatable
dtbl= {здесь идёт кусок кода вытаскивающий из базы данных таблицу с полями}
droplist.datasource=dtbl
droplist.datatextfield="str_value"
droplist.databind
то если выбрать потом из выпадающих списков какое-то знаечение оно при PostBack-е снова сброситься!!!!
Как быть?? Мне нужно как раз из базы брать данные
...
Рейтинг: 0 / 0
Placeholder и Databind
    #34054934
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
биндить (да и заполнять) дропдоун нужно только при первом добавлении.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Placeholder и Databind
    #34055005
Kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
биндить (да и заполнять) дропдоун нужно только при первом добавлении.

а потом при postback-е добавляем снова дропдоун и данные уже будут там????
...
Рейтинг: 0 / 0
Placeholder и Databind
    #34055854
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Угу.
Только добавлять дропдоун нужно пораньше (в идеале в Page_Init, но можно и в Page_Load)

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Placeholder и Databind
    #34065065
Kostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает

Подскажите, где я ошибся


Partial Class devices_add_device
    Inherits System.Web.UI.Page
    Dim Oraclass As New clsDBOracle("BopisBase")
    Dim sqlstring As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            bind_devices() 'забиндим список устройств
            ViewState("show") = False
            ViewState("first") = False
        Else
            If ViewState("show") = True Then
                'Здесь будем вызывать процедуру отрисовки контролов
                show_controls()
            End If
        End If
    End Sub

    'процедура занесения списка устройств в выпадающий список
    Private Sub bind_devices()
        types_list.DataSource = Oraclass.GetTable("select * from V_ALL_TYPES")
        types_list.DataTextField = "type_name"
        types_list.DataValueField = "id_type"
        types_list.DataBind()
        types_list.Items.Insert(0, "---Выберите тип устройства---")
    End Sub

    'процедура отрисовки контролов
    'отрисовываться будет только когда выбран элемент из списка устройств
    Private Sub show_controls()
        If types_list.SelectedIndex = 0 Then Return 'если не выбран никакой тип устройства, то просто выходим

        Dim tbl As HtmlTable = New HtmlTable
        Dim datbl As New Data.DataTable
        Dim i As Integer
        Dim row As HtmlTableRow
        Dim cell As HtmlTableCell
        Dim literal As Literal
        Dim editbox As TextBox
        Dim drop As DropDownList
        Dim btn As Button

        'и теперь сначала получим из базы данные, а потом будем формировать таблицу элементов
        datbl = Oraclass.GetTable(String.Format("select * from v_params_for_type_device where id_type={0} order by ord", types_list.SelectedValue))
        For i = 1 To datbl.Rows.Count
            ' создадим строку
            row = New HtmlTableRow()

            'создадим первую клетку
            cell = New HtmlTableCell()
            literal = New Literal

            literal.Text = datbl.Rows(i - 1).Item("var_name").ToString + ": "
            cell.Controls.Add(literal)
            row.Cells.Add(cell)

            'создадим вторую клетку
            cell = New HtmlTableCell()

            'и вот тут нужно посмотреть, что же сюды пихать
            If datbl.Rows(i - 1).Item("must").ToString = "Y" Or datbl.Rows(i - 1).Item("lev") > 2 Then 'если вложенность больше двух, значит будем делать поле ввода
                editbox = New TextBox
                editbox.ID = "control" + datbl.Rows(i - 1).Item("id_var").ToString 'нужно для того, чтобы потом можно было найти этот контрол в форме по идентификатору из базы
                editbox.CssClass = "add_device_editbox"
                If datbl.Rows(i - 1).Item("type_var").ToString = "B" Then
                    editbox.TextMode = TextBoxMode.MultiLine
                    editbox.Rows = 3
                End If
                editbox.ToolTip = datbl.Rows(i - 1).Item("comments").ToString
                If datbl.Rows(i - 1).Item("lev") > 2 Then editbox.ReadOnly = True 'поле ввода сделаем только для чтения
                cell.Controls.Add(editbox)
            Else
                drop = New DropDownList
                drop.ID = "control" + datbl.Rows(i - 1).Item("id_var").ToString 'нужно для того, чтобы потом можно было найти этот контрол в форме по идентификатору из базы
                drop.AutoPostBack = True 'разрешим отправку данных при выборе из списка информации

                drop.CssClass = "add_device_droplist"
                drop.ToolTip = datbl.Rows(i - 1).Item("comments").ToString

                cell.Controls.Add(drop)

                'создадим теперь кнопку для добавления новой записи
                btn = New Button
                btn.ID = "but" + i.ToString
                btn.CssClass = "add_device_btn"
                btn.ToolTip = "Добавить новый элемент в список"
                cell.Controls.Add(btn)
            End If

            row.Cells.Add(cell)
            tbl.Rows.Add(row)
        Next
        params_holder.Controls.Add(tbl)
        If ViewState("first") = False Then bind_values()
    End Sub

    Protected Sub types_list_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles types_list.SelectedIndexChanged
        params_holder.Controls.Clear() 'очистим содержимое панели
        ViewState("show") = True
        show_controls() 'и покажем контролы
    End Sub

    Private Sub bind_values()
        Dim dtbl As New Data.DataTable
        Dim tb As New Data.DataTable
        Dim drplist As DropDownList

        dtbl = Oraclass.GetTable(String.Format("select * from v_params_for_type_device where id_type={0} order by ord", types_list.SelectedValue))
        For Each rw As Data.DataRow In dtbl.Rows
            If rw.Item("lev") = 1 And rw.Item("must").ToString = "N" Then
                tb = Oraclass.GetTable(String.Format("select * from v_possible_params where id_type={0} and id_var={1}", types_list.SelectedValue, rw.Item("id_var")))
                drplist = params_holder.FindControl("control" + rw.Item("id_var").ToString)
                drplist.DataSource = tb
                drplist.DataTextField = "str_value"
                drplist.DataValueField = "id_var"
                drplist.DataBind()
                drplist.Items.Insert(0, "---Выберите из списка---")
            End If
        Next
        ViewState("first") = True
    End Sub

End Class
...
Рейтинг: 0 / 0
Placeholder и Databind
    #34065835
RasimS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kostyaВсем привет!
Я каждый раз при загрузке страницы динамически добавляю контролы DropDownList в Placeholder.
Там же после создания контрола перед непосредственным добавлением его в Placeholder я вбиваю в него данные, ну дак вот, если я сделаю это так:
droplist.items.add("Proba1")
droplist.items.add("Proba2")
то всё работает отлично, то есть, я могу на странице выбрать любое выпадающее из списка значение из этих контролов и потом сколько угодно раз обновлять страницу (например наживать кнопку на форме) и это выбранное значение в списке так и будет выбранным, НО если я буду вбивать значения так:
dim dtbl as new data.datatable
dtbl= {здесь идёт кусок кода вытаскивающий из базы данных таблицу с полями}
droplist.datasource=dtbl
droplist.datatextfield="str_value"
droplist.databind
то если выбрать потом из выпадающих списков какое-то знаечение оно при PostBack-е снова сброситься!!!!
Как быть?? Мне нужно как раз из базы брать данные
Сохрани выбранное значение, а потом при постбеке отображай его в списке,как выбранное. Список не должен занова перезаполняться.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Placeholder и Databind
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]