如何从我的ASPx DevExpress网格视图导出选定的数据

本文关键字:数据 视图 网格 我的 ASPx DevExpress | 更新日期: 2023-09-27 18:29:33

我需要将DevExpress GridView的选定行导出到XLS。当我尝试导出网格时,它会创建一个空文件。我认为这是由于回调在导出之前清除了网格中的数据。

这是我的ASPx页面的示例。

加载数据按钮

 <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Styles/Images/load.png" onclick="ImageButton1_Click" />

gridview

<dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" AutoGenerateColumns="False" KeyFieldName="car">
        <Columns>
            <dx:GridViewCommandColumn ShowSelectCheckbox="True" VisibleIndex="0" Caption="">
            </dx:GridViewCommandColumn>
            <dx:GridViewDataTextColumn Caption="Category" VisibleIndex="1" FieldName="category"
                Name="category" GroupIndex="0" SortIndex="0" SortOrder="Ascending">
            </dx:GridViewDataTextColumn>
            <dx:GridViewDataTextColumn Caption="Car" VisibleIndex="2" FieldName="car" Name="car">
            </dx:GridViewDataTextColumn>
        </Columns>
        <SettingsPager PageSize="100">
        </SettingsPager>
        <Settings ShowFooter="True" />
        <GroupSummary>
            <dx:ASPxSummaryItem FieldName="car" SummaryType="Count" />
        </GroupSummary>
    </dx:ASPxGridView>

GridExporter

    <dx:ASPxGridViewExporter ID="gridExport" runat="server" GridViewID="grid" ExportedRowType="Selected" />

创建文件按钮

<dx:ASPxButton ID="createFile" runat="server" Text="Create File"      UseSubmitBehavior="False" OnClick="createFile_Click">
                    <Image Url="~/Styles/Images/save.png">
                    </Image>
    </dx:ASPxButton>

现在是后面的代码。

当我点击加载按钮时,我会为我的测试创建假数据。

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        CreateFakeData();
    }

我在DataTable对象中创建数据。然后我将dataTable与网格绑定。

grid.DataSource = fakes;
grid.DataBind();

一切似乎都很好,但当我点击导出按钮时,什么都没有导出。

    protected void createFile_Click(object sender, EventArgs e)
    {
        gridExport.WriteXlsToResponse();
    }

我遵循DevExpress教程导出ASPl中的选定行。但我的页面似乎被刷新了,所以我在导出之前丢失了与网格绑定的数据。

如何从我的ASPx DevExpress网格视图导出选定的数据

当我在代码后面将数据绑定到ASPXGridView时,我也遇到了类似的情况。我能够通过在导出行之前的按钮单击中重新绑定来解决它。

protected void createFile_Click(object sender, EventArgs e)
{
    grid.DataSource = fakes;        
    grid.DataBind();        
    gridExport.WriteXlsToResponse();
}

正如我所料,问题出在回发上,我需要一种方法将我的gridView数据保存在某个地方,并在回发后重新加载。

我将OnDataBinding属性添加到我的gridView

 <dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server"
AutoGenerateColumns="False" Width="100%" Caption="My car collection"
OnDataBinding="grid_DataBinding" KeyFieldName="car_model">

在后面的代码中,我对网格DataBinding函数进行了编码,以便它使用之前存储在会话中的数据来恢复数据。

  protected void grid_DataBinding(object sender, EventArgs e)
        {
            if (Session["gridData"] != null)
            {
                // Assign the data source in grid_DataBinding
                grid.DataSource = Session["gridData"];
            }
        }

不要忘记在需要时将数据保存在会话中。(搜索后我马上就做了)

 protected void searchBtn_Click(object sender, ImageClickEventArgs e)
        {
            datas = FindCars(input.Text);
            grid.DataSource = datas;
            grid.DataBind();
            //Store data in the session
            Session["gridData"] = this.datas;
        }