Asp.net 将DataView转换为DataTable
我有一个带有搜索用户按钮的表单当我选择模式弹出扩展程序将显示的按钮时,用户可以搜索所有员工,当选择值时,所选值应通过另一个gridview传递给父表单 现在,我有一个将dataview转换为datatable的代码。调试时,索引的值未传递到(idx) 当我尝试调试时。我尝试用索引4搜索一行;(s)的值为4,但传递到(idx)时为-1Asp.net 将DataView转换为DataTable,asp.net,vb.net,datatable,dataview,Asp.net,Vb.net,Datatable,Dataview,我有一个带有搜索用户按钮的表单当我选择模式弹出扩展程序将显示的按钮时,用户可以搜索所有员工,当选择值时,所选值应通过另一个gridview传递给父表单 现在,我有一个将dataview转换为datatable的代码。调试时,索引的值未传递到(idx) 当我尝试调试时。我尝试用索引4搜索一行;(s)的值为4,但传递到(idx)时为-1 我需要找到值s.您可能没有阅读相关文档。这来自DataTable.Clone方法的文档: 克隆创建与原始数据表具有相同结构的新数据表,但不复制任何数据(新数据表将不
我需要找到值s.您可能没有阅读相关文档。这来自
DataTable.Clone
方法的文档:
克隆创建与原始数据表具有相同结构的新数据表,但不复制任何数据(新数据表将不包含任何数据行)。要将结构和数据复制到新的DataTable中,请使用copy
如果
dv
是dt
的视图,并且dt
不包含任何行,则Find
当然返回-1。即使没有阅读这些文档,为什么您没有发现您的DataTable
是空的?这是您应该首先检查的内容之一。您可能没有阅读相关文档。这来自DataTable.Clone
方法的文档:
克隆创建与原始数据表具有相同结构的新数据表,但不复制任何数据(新数据表将不包含任何数据行)。要将结构和数据复制到新的DataTable中,请使用copy
如果
dv
是dt
的视图,并且dt
不包含任何行,则Find
当然返回-1。即使没有阅读这些文档,为什么您没有发现您的DataTable
是空的?这是您应该首先检查的事项之一。-1表示不匹配。任何其他内容都意味着在该索引中找到了匹配项。如果Find
返回0,则表示在第一行中找到了匹配项。如果你认为应该换一排,那你就错了。要么你的期望是错误的,要么你做错了什么。我们没办法,因为我们没有你的数据。所以现在我得到了匹配和传递数据,但得到了错误“数据异常未处理”dv(idx)(“NAME”)=row.Cells(2).text这与这个问题的主题无关。你问的问题已经得到了回答,所以你应该接受这个答案,继续前进。如果你还有其他问题,你应该在一个新的帖子中发布,只提供与该问题相关的所有信息。-1表示不匹配。任何其他内容都意味着在该索引中找到了匹配项。如果Find
返回0,则表示在第一行中找到了匹配项。如果你认为应该换一排,那你就错了。要么你的期望是错误的,要么你做错了什么。我们没办法,因为我们没有你的数据。所以现在我得到了匹配和传递数据,但得到了错误“数据异常未处理”dv(idx)(“NAME”)=row.Cells(2).text这与这个问题的主题无关。你问的问题已经得到了回答,所以你应该接受这个答案,继续前进。如果你还有其他问题,你应该在一个新的帖子中发布,只提供与该问题相关的所有信息。
Dim RowIndex As Integer = gvUser.EditIndex
Dim dt As New DataTable
dt = TryCast(Session("dbCache_User"), DataView).Table.Clone
Dim dv As New DataView(dt, "", "USR_IDNTY", DataViewRowState.OriginalRows)
Dim s As String = TryCast(gvUser.Rows(RowIndex).FindControl("lblUSR_IDNTY"), Label).Text
Dim idx As Integer = dv.Find(s)
dv(idx)("USR_ID") = row.Cells(1).Text
dv(idx)("NAME") = row.Cells(2).Text
gvUser.DataSource = dv
gvUser.DataBind()