我有一个使用存储过程作为其数据源的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头进行排序。
答案 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()