数据绑定后如何下载GridView数据?

时间:2010-10-15 16:55:20

标签: asp.net gridview ado.net

过去,我在后面的代码中使用“手动创建的”数据源填充了GridView,通过在页面加载中执行此操作:

DataTable myData = SomeMethod(); //Returns a DataTable
myGrid.DataSource = myData;
myGrid.DataBind();

每当我想将数据下载到CSV文件时,我只需将以下内容添加到按钮的Click事件中:

DataTable csvData = new DataTable();
csvData = (DataTable)myGrid.DataSource;

//CSV construction, reponse send to browser, etc.

这是因为GridView在页面加载期间已经是数据绑定,所以当达到Click事件时数据可用。

但是现在我无法使用我在设计时添加的SqlDataSource控件(HTML)来使用它。此SqlDataSource绑定到具有自动回发的DropDown控件,以便在更改选择时检索数据。

我运行网站,数据已经显示在GridView中(EnableViewState = false以强制在每个页面加载时查询),然后单击按钮,只是为了获得myGrid.DataSource为空的事实引起的异常。

我的问题(最后): 我注意到click事件发生在GridView_OnDataBound之前,但即使是OnDataBound,数据源也是null。如何从渲染的GridView获取数据以允许donload?或者我应该从哪里尝试检索它?

1 个答案:

答案 0 :(得分:2)

使用设计时数据源时,不使用DataSource属性。而是使用DataSourceID属性,但它包含的只是数据源控件的名称。您将不得不返回SQLDataSource以获取导出所需的信息。

DataView dv = (DataView)sqlDataSource.Select(DataSourceSelectArguments.Empty); 
DataTable dt = dv.ToTable();