добавление набора данных в хранилище данных в vb.net - PullRequest
0 голосов
/ 03 марта 2010

Я надеюсь, что правильно задал название вопроса. позвольте мне объяснить мою проблему - я делаю таблицу с помощью кода vb.net (htmltablecell, htmltablerow ..) нет, эта таблица заполняется запросом SQL и работает отлично. но внутри этой таблицы в одной ячейке таблицы мне нужно добавить выпадающий список, который требует совершенно другого запроса и должен запускаться отдельно в каждой строке. поэтому код выглядит следующим образом

Sql = "..." rd = ExecuteReader (SqlCnn, Sql)

        Dim newcounter As Integer = 0
        While rd.Read()
            newcounter += 1
            Dim tr As New HtmlTableRow
            Dim td As New HtmlTableCell
            Dim chkbox As New CheckBox
            Dim id As String = rd("id") & ""
            If id.Length = 0 Then id = "new" & newcounter
            id &= "_" & rd("col1")
            chkbox.Style.Add("width", "20%")
            chkbox.ID = "new_id_" & id
            chkbox.Text = rd("col1")

            tr.Style.Add("width", "100%")
            td.Style.Add("width", "10%")
            td.Style.Add("text-align", "left")
            td.Controls.Add(chkbox)
            tr.Cells.Add(td)

            td = New HtmlTableCell
            td.Style.Add("width", "30%")
            Dim ddl As New dropdownlist
            ddl.Style.Add("width", "80%")
            ddl.ID = "a1_" & id
            --???????
            td.Controls.Add(ddl)
            tr.Cells.Add(td)

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

1 Ответ

0 голосов
/ 03 марта 2010

Я бы сделал это с 2 запросами; 1 для получения данных ddl и 1 для получения фактических записей. Получите данные ddl (ddlDataReader) перед фактическими результатами, создайте объект ddl и добавьте его в каждую строку.

Примерно так должно работать: (я не работаю с VB.Net, поэтому вам, возможно, придется что-то исправить)

    Dim ddl As New dropdownlist
        ddl.Style.Add("width", "80%")
        ddl.ID = "a1_" & id
    While ddlDataReader.Read()
        ---add items to ddl
    end


    Dim newcounter As Integer = 0
    While rd.Read()
        newcounter += 1
        Dim tr As New HtmlTableRow
        Dim td As New HtmlTableCell
        Dim chkbox As New CheckBox
        Dim id As String = rd("id") & ""
        If id.Length = 0 Then id = "new" & newcounter
        id &= "_" & rd("col1")
        chkbox.Style.Add("width", "20%")
        chkbox.ID = "new_id_" & id
        chkbox.Text = rd("col1")

        tr.Style.Add("width", "100%")
        td.Style.Add("width", "10%")
        td.Style.Add("text-align", "left")
        td.Controls.Add(chkbox)
        tr.Cells.Add(td)

        td = New HtmlTableCell
        td.Style.Add("width", "30%")
        td.Controls.Add(ddl)
        tr.Cells.Add(td)

Другой подход заключается в загрузке данных ddl в таблицу данных, чтобы вы могли проходить через них несколько раз, а затем создавать ddl с уникальным Id при создании каждой строки.

...