从使用存储过程的gridview数据源捕获数据表

时间:2014-02-26 21:11:25

标签: asp.net vb.net gridview datasource

我有一个使用存储过程作为其数据源的Gridview。如何将结果加载到数据表中?

似乎我尝试的任何事件都会返回Nothing。

Dim dt As DataTable = GridView1.DataSource

在填充Gridview后尝试此操作。就像在OnSorting活动中一样。

更新:

ASP:

asp:GridView ID="GridView1" runat="server" DataSourceID="itemDataSource" 

在DropDownList_SelectedIndexChanged事件中,我触发了这段代码......

vb.net

    itemDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("MyConnectionString").ToString()

    itemDataSource.SelectCommandType = SqlDataSourceCommandType.StoredProcedure
    itemDataSource.SelectCommand = "usp_showPendbyDB"

上面的itemDataSource绑定到我的Gridview。

我已经尝试过将数据源捕获回多个事件中的会话,正如我所说的那样......

        Session("grdvTable") = GridView1.DataSource

无论我把它放在哪里,它总是等于Nothing。

解决方案:除了下面标记的答案,为了将数据表重新绑定到Gridview,我必须从Gridview中删除DataSourceID并绑定到后面代码中的Gridview。 / p>

VB.net

    GridView1.DataSource = itemDataSource
    GridView1.DataBind()

另外,在对数据表进行排序或其他数据操作之后,只需将相同的代码应用于更新数据表结果。

    GridView1.DataSource = dt
    GridView1.DataBind()

当然,如果您需要管理写回数据库的其他代码,我只需要对各种col头进行排序。

1 个答案:

答案 0 :(得分:1)

在回发时,您的数据源将为空。请参阅:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx

试试这个:

Dim dv as DataView = itemDataSource.Select(DataSourceSelectArguments.Empty)
Dim dt as DataTable = new DataTable()
dt = dv.ToTable()