【问题标题】:Edited code.How to display gridview from dropdown list in asp.net using vb.net编辑代码。如何使用 vb.net 从 asp.net 的下拉列表中显示 gridview
【发布时间】:2016-04-11 10:06:17
【问题描述】:

您好,我已经发布了这个问题,但请帮助我通过下拉列表显示 gridview。下面是vb.net中的代码

     Private Sub BindGridView()
    Dim filter As String = ""
    If ddlOwnerDepartment.SelectedValue <> "" Then
        filter = filter & " AND OwnerDepartment ='" & ddlOwnerDepartment.SelectedValue & "'"
    End If
    Dim table1 As DataTable = New DataTable("Details")
    table1.Columns.Add("ReferenceNo")
    table1.Columns.Add("Title")
    table1.Columns.Add("Counterparty")
    table1.Columns.Add("OwnerDepartment")
    table1.Columns.Add("Status")
    table1.Columns.Add("CreatedBy")
    table1.Columns.Add("CreatedOn")
    table1.Columns.Add("link")
    table1.Rows.Clear()
    Dim conSQL As New SqlConnection(conStrDRS)
    conSQL.Open()
    Dim cmdSQL As SqlCommand = New SqlCommand("SELECT Title, ReferenceNo,OwnerDepartment,CreatedBy,CreatedOn,Status,Counterparty " & _
                                     " FROM [dbo].[Registration]" & filter)

    cmdSQL.Connection = conSQL
    Dim adptSQL As New SqlClient.SqlDataAdapter(cmdSQL)
    Dim myDataSet As New DataSet()
    adptSQL.Fill(myDataSet)
    conSQL.Close()
    gvDetails.DataSource = myDataSet.Tables(0) 'dvAlert
    gvDetails.DataBind()
End Sub         

 Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    BindGridView()
End Sub

【问题讨论】:

  • 您面临的问题是什么?为什么要在OwnerDepartment 上应用过滤器两次?此外,您应该使用参数化查询来避免 SQL 注入攻击。
  • 你好 avi 是什么问题?有什么错误吗?例外请附上具体的问题
  • 当我点击搜索时没有可用数据。
  • 嗨 Rahul 我想通过 ownerdepartment 搜索 gridview 也是下拉列表
  • 我可以更新一下吗

标签: html asp.net vb.net gridview


【解决方案1】:

您正在连接 filtersql query 的结尾,这是不需要的,因为 filter 具有与您在查询末尾添加的相同的值。

也不要使用Parameterized SQL 连接值。像这样将参数添加到您的 sql 查询中。

Dim cmdSQL As SqlCommand = New SqlCommand("SELECT Title, ReferenceNo,OwnerDepartment,CreatedBy,CreatedOn,Status,Counterparty " &
                                 " FROM [dbo].[Registration] Where OwnerDepartment=@OwnerDepartment");
cmdSQL.Paramters.AddWithValue("@OwnerDepartment",ddlOwnerDepartment.SelectedValue);

编辑

Private Sub BindGridView(bool showAll)
Dim filter As String = ""
If ddlOwnerDepartment.SelectedValue <> "" Then
    filter = filter & " AND OwnerDepartment ='" & ddlOwnerDepartment.SelectedValue & "'"
End If
Dim table1 As DataTable = New DataTable("Details")
table1.Columns.Add("ReferenceNo")
table1.Columns.Add("Title")
table1.Columns.Add("Counterparty")
table1.Columns.Add("OwnerDepartment")
table1.Columns.Add("Status")
table1.Columns.Add("CreatedBy")
table1.Columns.Add("CreatedOn")
table1.Columns.Add("link")
table1.Rows.Clear()
Dim conSQL As New SqlConnection(conStrDRS)
conSQL.Open()
Dim cmdSQL As SqlCommand = New SqlCommand("SELECT Title, ReferenceNo,OwnerDepartment,CreatedBy,CreatedOn,Status,Counterparty FROM [dbo].[Registration] ";

if showAll==false then
cmdSQL += "Where OwnerDepartment=@OwnerDepartment");
cmdSQL.Paramters.AddWithValue("@OwnerDepartment",ddlOwnerDepartment.SelectedValue);
End If

cmdSQL.Connection = conSQL
Dim adptSQL As New SqlClient.SqlDataAdapter(cmdSQL)
Dim myDataSet As New DataSet()
adptSQL.Fill(myDataSet)
conSQL.Close()
gvDetails.DataSource = myDataSet.Tables(0) 'dvAlert
gvDetails.DataBind()
End Sub

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
BindGridView(true)
End Sub

现在,当您从 dropdown search 调用此函数时,将 false 从该函数传递给 BindGridView(false)

【讨论】:

  • 嗨,Mairaj 它可以工作,但我的问题是我想在单击搜索按钮时显示,请帮助我。感谢您的回答
  • 它应该可以工作,你可以检查当你点击按钮时你在ddlOwnerDepartment.SelectedValue 中获得价值吗?
  • 不,它只在下拉列表中显示,而不是在点击搜索时显示
  • 我的目标是点击搜索按钮时显示数据。如果我在下拉列表中搜索,它仅在 gridview 中显示选定的值数据,但是当我单击搜索时,我应该显示所有希望您现在理解的数据
  • 确定,当点击搜索按钮时,不要在sql query 中添加 where 子句,当您通过下拉菜单搜索时,不要在 sql query 中添加 where 子句。
猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多