如何使用ASP.NET使用来自SQL查询的数据在gridview中设置Dropdownlist的selectedvalue?

时间:2014-06-03 01:10:14

标签: asp.net vb.net gridview

使用数据表中的数据在gridview中设置下拉列表的选定值时出现问题。

我有一个SQL查询,用于选择必须从下拉列表中显示的数据。下拉列表已填充。因此,查询结果必须显示在下拉列表中。

我尝试了下面的代码,但它在每一行都返回相同的值。

这是从数据库中选择数据的代码:

 Public Function POPULATE_DROPDOWNLIST(ByVal d_Date As Date, ByVal d_Hour As Integer)

    Using con As Odbc.OdbcConnection = New Odbc.OdbcConnection(My.Settings.DB_CONN)
        Using cmd As Odbc.OdbcCommand = _
          New Odbc.OdbcCommand( _
              "SELECT * FROM TBLDATA WHERE D_DATE='" & d_Date & _
                  "' AND DELIVERY_HOUR='" & d_Hour & "'",
              con)

            con.Open()
            Using dr As Odbc.OdbcDataReader = cmd.ExecuteReader
                Dim d_List As New List(Of String)
                While dr.Read
                    d_List.Add(dr("CRITERIA").ToString())
                End While
                con.Close()
                Return d_List
            End Using
        End Using
    End Using
End Function

虽然这是我的代码,用于填充上面函数返回的数据的gridview下拉列表。

Dim dList As New List(Of String)

dList = POPULATE_DROPDOWNLIST(txtdate.Text, DropDownList1.Text)

For Each value In dList
    For i = 0 To GridView1.Rows.Count - 1

        Dim ddl As DropDownList = _
            DirectCast(GridView1.Rows(i).Cells(6).FindControl("dropdowncriteria"), _
                       DropDownList)
        ddl.SelectedValue = value
    Next
Next

1 个答案:

答案 0 :(得分:0)

试试这个:

 Public Function POPULATE_DROPDOWNLIST(ByVal d_Date As Date, ByVal d_Hour As Integer) As DataTable
    Dim dataTable As New DataTable
    Using con As New Odbc.OdbcConnection("CS")
        Using cmd As New Odbc.OdbcCommand
            cmd.CommandText = "QUERY"
            con.Open()
            Dim dataAdapter As New Odbc.OdbcDataAdapter(cmd.CommandText, con)
            dataAdapter.Fill(dataTable)
            Return dataTable
        End Using
    End Using
End Function

Public Sub BIND_DDL()
    Dim previousDDLvalue As String = ddl.SelectedValue
    Dim dt As New DataTable
    dt = POPULATE_DROPDOWNLIST(Now, 24)
    With ddl
        .Items.Clear()
        .DataSource = dt
        .DataValueField = "ID"
        .DataTextField = "DESCRIPTION"
        .DataBind()
        .SelectedValue = previousDDLvalue
    End With
End Sub