Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在Vb.Net中使用DataTable.Select()方法时出错_Asp.net_Sql_Visual Studio 2008_.net 3.5_Datatable - Fatal编程技术网

Asp.net 在Vb.Net中使用DataTable.Select()方法时出错

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。这是我得到的一个例外

我正在使用DataTable。请根据某些条件选择文件管理器的方法

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