2016-02-25 3 views
0

У меня есть функция для экспорта некоторых данных из GridView в Excel, которые связаны с некоторыми флажками. Таким образом, он экспортирует только проверенные строки. Это прекрасно работает, однако я не могу отключить пейджинг для экспорта? Это мой код:Отключить пейджинг в GridView для экспорта Excel

private void ExportGridToExcel() 
{ 

    bool isSelected = false; 
    foreach (GridViewRow i in GridView1.Rows) 
    { 
     CheckBox cb = (CheckBox)i.FindControl("chkSelect"); 
     if (cb != null && cb.Checked) 
     { 
      isSelected = true; 
      break; 
     } 
    } 

    if (isSelected) 
    { 
     GridView gvExport = GridView1; 
     // this below line for not export checkbox to excel file 
     gvExport.Columns[0].Visible = false; 
     foreach (GridViewRow i in GridView1.Rows) 
     { 
      gvExport.Rows[i.RowIndex].Visible = false; 
      CheckBox cb = (CheckBox)i.FindControl("chkSelect"); 
      if (cb != null && cb.Checked) 
      { 
       gvExport.Rows[i.RowIndex].Visible = true; 
      } 
     } 

     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=ExportGridData.xls"); 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.ms-excel"; 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter htW = new HtmlTextWriter(sw); 
     Response.ContentEncoding = System.Text.Encoding.Unicode; 
     Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble()); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     gvExport.AllowPaging = false; 
     gvExport.RenderControl(htW); 
     Response.Output.Write(sw.ToString()); 
     Response.End(); 

    } 
} 

protected void Button3_Click(object sender, EventArgs e) 
{ 

    ExportGridToExcel(); 

} 

Как вы можете видеть, я установил AllowPaging = false, но номера страниц все еще видны в экспортируемый файл. Кто-нибудь понял, почему?

ответ

1

Чтобы экспортировать все данные из GridView вы должны повторно связать Datasource

//1.bind with paging disabled 
gvExport.AllowPaging = false; 
gvExport.DataBind(); 

//2.export method here 

//3.bind with paging enabled 
gvExport.AllowPaging = true; 
gvExport.DataBind(); 

, но если это возможно, я бы экспортировать данные непосредственно из источника данных, потому что вы должны удалить заголовки, скрыть столбцы, заменить   и ручки управления, как asp:Checkbox отдельно

Это хороший подход, если вы хотите экспортировать из вашего asop:GridView - http://forums.asp.net/post/4222334.aspx

+0

Да, это работает, когда я делаю DataBind однако я пытаюсь экспортировать только данные с галочкой так, когда я делаю что DataBind функциональность теряется – MariaL

+0

, но значение 'checked' хранится в базе данных? поэтому вы можете экспортировать 'db.YourData.Where (x => x.export)' или sth? – fubo

0

Перед рендерингом - отключить подкачку, связать данные, а затем делают:

gvExport.AllowPaging = false; 
gvExport.DataSource = ds; //Data Source 
gvExport.DataBind(); 
gvExport.RenderControl(objHtmlTextWriter) 
Смежные вопросы