选择多条记录的最佳方法 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的主要内容,如果未能解决你的问题,请参考以下文章
GridView下DropDownList 的选择方法onselectedindexchanged 实现方法
c# asp.net GridView中如何删除一条记录后刷新页面