Asp.net 在Vb.Net中使用DataTable.Select()方法时出错
我正在使用DataTable。请根据某些条件选择文件管理器的方法Asp.net 在Vb.Net中使用DataTable.Select()方法时出错,asp.net,sql,visual-studio-2008,.net-3.5,datatable,Asp.net,Sql,Visual Studio 2008,.net 3.5,Datatable,我正在使用DataTable。请根据某些条件选择文件管理器的方法 dtRows = m_dtTable.Select(String.Format("IdentifierID={0}", dtRow ("QuestionID").ToString)) 我使用类似的方法对不同位置的数据进行排序。但我只有一个地方出错了。 有什么能帮我找到为什么会发生这种异常吗?也帮我知道为什么其他地方没有例外?datatable的值由存储过程填充 范围对象中的最小值2必须小于或等于最大值-1。这是我得到的一个例外
dtRows = m_dtTable.Select(String.Format("IdentifierID={0}", dtRow
("QuestionID").ToString))
我使用类似的方法对不同位置的数据进行排序。但我只有一个地方出错了。
有什么能帮我找到为什么会发生这种异常吗?也帮我知道为什么其他地方没有例外?datatable的值由存储过程填充
范围对象中的最小值2必须小于或等于最大值-1。这是我得到的一个例外
编辑-在第一个答案之后-
我并不是每次都会遇到异常,只是有一次我无法识别场景:
添加-在第一个答案之后-
谢谢你的解决方案
注:m_dependent questionsDataable和m_dtTable的模式相同
colIdentifierID.DataType=Type.GetTypeSystem.String
colIdentifierID.ColumnName=IdentifierID
这是特定列的类型。还有另一列也是类似的类型,当我使用类似的方法时,不会发生错误
colQuestionID.DataType=Type.GetTypeSystem.String
colQuestionID.ColumnName=QuestionID就是这个列,我就是这样使用的。”Dim strFilterExpression As String=questionID={0}m_dependent QuestionsDataable.SelectString.FormatstrFilterExpression,dRowQuestionID'
这里没有发生异常或错误。因此,如果我选择您的解决方案,我需要通过在我的解决方案中使用Filter方法的所有位置添加“in all place”来更改过滤器表达式 不指定要筛选的列的数据类型,如果是字符串,则需要在筛选表达式中的参数周围添加单引号:
dtRows = m_dtTable.Select(String.Format("IdentifierID='{0}'", dtRow("QuestionID").ToString()))
或者,如果希望通过DGV进行排序+筛选,而无需重新填充DT和DGV,则可以使用DataView的.sort和.RowFilter
是的,在thatcolIdentifierID.DataType=Type.GetTypeSystem.String colIdentifierID.ColumnName=IdentifierID@Jay中有记录,感谢您的修复。请检查编辑的问题好吗?@Harie如果列的基础数据类型是字符串,我将始终使用单引号;我有点惊讶,如果你不这样做,它会起作用。DataTable表达式求值器可能允许您不使用单引号,但最好是明确地使用这样的内容。
Private _DS As New DataSet
Private _DT As New DataTable
Private _DV As New DataView
Private _DGV As New DataGridView
Private _isFiltering As Boolean = False
Private Sub filterView()
If _isFiltering Then Return
_isFiltering = True
Dim _SF As String = "price ASC"
'Dim _RF As String = tableStructure.Columns(0).Name & " < 20" ' just an example
Dim _RF As String = "price < 20"
_DGV.ClearSelection()
_DT.DefaultView.Sort = _SF
_DT.DefaultView.RowFilter = _RF
_isFiltering = False
End Sub