2013-08-28 53 views
0

我需要將我的DevExpress GridView的選定行導出到XLS。 當我嘗試導出我的網格時,它創建一個空文件。我認爲這是由於回調在導出之前清除了我的網格中的數據。如何導出選中的數據從我的ASPx DevExpress gridview

這是我的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對象中創建我的數據。然後我綁定我的數據表與我的網格。

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

一切似乎很好,但當我點擊導出按鈕,什麼都沒有導出。

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

我跟着DevExpress tutoria to export selected rows in ASPl。但似乎我的網頁被刷新了,所以我在輸出之前丟掉了與網格綁定的數據。

回答

2

的問題是與回發,如我所料,我需要一種方法來讓我的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"> 

在後面的代碼,我編寫了網數據綁定功能,所以它恢復使用會話放養前的數據的數據。

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; 

     } 
2

當我將數據綁定到後臺代碼中的ASPXGridView時,我遇到了類似的情況。我可以通過在導出行之前點擊按鈕重新綁定來解決它。

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

它表明WriteXlsToResponse()做一個回調,因爲你的代碼讓我導出數據,但不能onely所選行。 – rousseauo

+0

是的,在我的情況下,我只需要按原樣導出網格,過濾是使用後面代碼中的數據完成的。如果你能夠把DataSource放在控件的屬性中(而不是代碼),它應該做你想做的事情。 – BoardwalkDevils

相關問題