Раскрывающийся список и проблема с индексом строк / выбранным значением - PullRequest
0 голосов
/ 01 июня 2009

У меня есть сетка с выпадающим списком, который был создан программно. Я хочу иметь
доступ к выбранному значению и к идентификатору этой строки. Я создал раскрывающийся список в Gridview_RowDataBound , и я могу использовать текст в ячейке, но мой addHandler никогда не запускается Где я могу дать ему обработчик Add. Я полагаю, что могу назначить ему обработчик надстроек в RowCreated, но как я смогу настроить обработчик добавления, если кнопка будет создана в границу строки?

Dim deptvalue As String
    Dim i As Integer = 0

    Dim ddlmgr As New DropDownList
    ddlmgr.AutoPostBack = True
    AddHandler ddlmgr.SelectedIndexChanged, AddressOf ddlmgr_SelectedIndexChanged
    ddlmgr.Items.Clear()
    ddlmgr.Items.Insert(0, "--Select a Manager--")
    ddlmgr.AppendDataBoundItems = True
    ddlmgr.DataTextField = "Name"
    ddlmgr.DataValueField = "number"
    ddlmgr.DataSource = SqlDataSource2
    ddlmgr.DataBind()

    deptvalue = e.Row.Cells(0).Text
    ddlmgr.Attributes.Add("onchange", "setDepart('" & deptvalue & "')")

    If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <> DataControlRowType.Header And e.Row.RowType <> DataControlRowType.Footer Then
        e.Row.Cells(2).Controls.Add(ddlmgr)
    End If

    If e.Row.RowType <> DataControlRowType.Pager And e.Row.RowType <> DataControlRowType.Footer Then
        e.Row.Cells(0).Style.Add("display", "none")
    End If

Лучше всего подходит для привязки к Rowdata, потому что элементы моего выпадающего списка не дублируются, но мне нужно иметь возможность использовать созданный мной обработчик дополнений.

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Вместо динамического создания выпадающего меню я добавил элемент управления в сетку. Благодаря этому я получил доступ к выбранному значению. Затем я устанавливаю значение скрытого значения, добавляя атрибут onchange в раскрывающийся список, который устанавливает скрытое значение для текста в моем скрытом поле. Следующее находится в Gridview_RowDatabound:

 For i As Integer = 0 To GridView1.Rows.Count - 1

        Dim ddl As DropDownList = GridView1.Rows(i).FindControl("ddlmgr")
        Dim deptvalue As String = GridView1.Rows(i).Cells(0).Text

        ddl.Attributes.Add("onchange", "setDepart('" & deptvalue & "')")
    Next
0 голосов
/ 01 июня 2009

Вместо использования текста в ячейке, почему бы просто не использовать e.item.DataItem из rowDatabound для получения фактического значения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...