选择多条记录的最佳方法 GridView Asp.Net

Posted

技术标签:

【中文标题】选择多条记录的最佳方法 GridView Asp.Net【英文标题】:Best Way to Select Multiple Records GridView Asp.Net 【发布时间】:2014-05-20 12:47:02 【问题描述】:
Private Sub GetSelectedBasketRecord()
Dim j As Integer = 0

ViewState("SelectedBasket") = Nothing
For i As Integer = 0 To gvSapBaskets.Rows.Count - 1

    Dim rb As CheckBox = DirectCast(gvSapBaskets.Rows(i).Cells(0).FindControl("CHKButton1"), CheckBox)
    If rb IsNot Nothing Then
        If rb.Checked Then

            Dim hf As HiddenField = DirectCast(gvSapBaskets.Rows(i).Cells(0).FindControl("HiddenFieldBasketID"), HiddenField)
            If hf IsNot Nothing Then
                j = j + 1
                If j = 1 Then
                    ViewState("SelectedBasket") = "PositionID = " & hf.Value & " "
                Else
                    ViewState("SelectedBasket") = ViewState("SelectedBasket") & "AND PositionID = " & hf.Value & " "
                End If
                BasketIDLBL.Text = ViewState("SelectedBasket")
            End If

            If i = gvSapBaskets.Rows.Count - 1 Then
                Exit For
            End If
        End If
    End If

Next
End Sub

我在网格视图中有复选框,

用户可以选择多个复选框 每个复选框都有一个分配给它的 ID

目前我打算做的是创建一个 SQL 查询以根据用户在 gridview 中选择的内容返回行,视图状态将生成 SQL 查询的一部分

如果用户选择 1 行:ViewState("SelectedBasket") 为 PositionID = 1234 如果选择了 2 行 ViewState("SelectedBasket") 为 PositionID = 1234 AND PositionID = 5678

然后我要生成类似的 SQL

"SELECT * FROM TABLE WHERE " & ViewState("SelectedBasket") & "

ViewState("SelectedBasket") 类似于PositionID = 1234 AND PositionID = 5678

我觉得可能有更好的方法来解决这个问题,只是想不出

非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

您可能指的是 OR 而不是 AND。

但更简单的方法是使用 IN:

SELECT * FROM TABLE WHERE PositionID IN (1234, 5678)

【讨论】:

【参考方案2】:

我认为这可能是您正在寻找的:

Private Sub GetSelectedBasketRecord()
  ViewState("SelectedBasket") = ""
  For Each gvRow in gvSapBaskets.Rows
      Dim rb As CheckBox = DirectCast(gvRow.FindControl("CHKButton1"), CheckBox)
      If rb IsNot Nothing Then
          If rb.Checked Then
              Dim hf As HiddenField = DirectCast(gvRow.FindControl("HiddenFieldBasketID"), HiddenField)
              If hf IsNot Nothing Then
                  ViewState("SelectedBasket") &= ViewState("SelectedBasket") & ", "
              End If
          End If
      End If
  Next

  If ViewState("SelectedBasket") <> "" Then
     ViewState("SelectedBasket") = Left(ViewState("SelectedBasket"), LEN(ViewState("SelectedBasket"))-2)
     ViewState("SelectedBasket") = "In (" & ViewState("SelectedBasket") & ")"
  End If
End Sub

【讨论】:

以上是关于选择多条记录的最佳方法 GridView Asp.Net的主要内容,如果未能解决你的问题,请参考以下文章

有哪些 ASP.NET GridView 性能改进机会?

GridView下DropDownList 的选择方法onselectedindexchanged 实现方法

GridVIew中下载文件的方法探讨,方法最佳。

c# asp.net GridView中如何删除一条记录后刷新页面

INSERT INTO 语句中的语法错误(将多条记录从 Gridview 插入到 Access)

将 1000 多条记录上传到还包含来自 iOS/Android 应用程序的每条记录的图像的服务器的最佳方法是啥?