【问题标题】:adding a dataset inside a datareader in vb.net在 vb.net 的数据读取器中添加数据集
【发布时间】:2011-06-11 18:31:28
【问题描述】:

我希望我已经正确地询问了问题标题。让我解释一下我的问题- 我正在通过 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)

???在代码中,下拉列表每次都应使用自己的数据读取器和 while 循环和查询来填充。我怎样才能做到这一点?

【问题讨论】:

  • 表格中的每一行在其下拉列表中都有自己的(该行独有)选项集?
  • 那么下拉列表应该有来自 1 个查询的值,所以每一行都应该有具有相同数据的下拉列表,但有自己的 ddl id

标签: vb.net drop-down-menu sqldatareader


【解决方案1】:

我会用 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 数据加载到数据表中,以便您可以循环多次,然后在创建每一行时创建具有唯一 Id 的 ddl。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多