2010-03-03 4 views
0

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

Sql = "..." й = 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) 

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

+0

В каждой строке таблицы есть собственный (уникальный для строки) набор опций в раскрывающемся списке? – RKitson

+0

нужный выпадающий список должен иметь значения из 1 запроса, поэтому каждая строка должна иметь раскрывающийся список с одинаковыми данными, но с собственным идентификатором ddl – reget

ответ

0

Я бы сделал это с 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 в DataTable, так что вы можете прокручивать его несколько раз, а затем создавать ddl с уникальным идентификатором, когда каждая строка создается.