如何从我的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中的选定行。但我的页面似乎被刷新了,所以我在导出之前丢失了与网格绑定的数据。
当我在代码后面将数据绑定到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;
}