【问题标题】:How to download GridView data after data binding?数据绑定后如何下载GridView数据?
【发布时间】:2010-10-15 16:55:20
【问题描述】:

过去,我通过在页面加载中执行此操作,在后面的代码中使用“手动创建”数据源填充 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 事件时数据可用。

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

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

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

【问题讨论】:

    标签: asp.net gridview ado.net


    【解决方案1】:

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

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

    【讨论】:

    • 我刚试了一下,效果很好。我通常使用手动创建的数据源对象,但这次我需要一个功能齐全(可排序、可分页)的 GridView,而且我不想花太多时间创建和处理事件。谢谢!
    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多