2015-10-09 3 views
0

У меня есть страница Aspx, которая отображает GridView. Сетка будет отображаться с данными, зависящими от того, какой catergory был выбран из выпадающего меню. Пользователь имеет возможность загрузить этот файл в формате CSV (экспорт в CSV). Теперь я хочу, чтобы Gridview не появлялся (это так сильно, что он просто зависает), а вместо этого, чтобы загрузить CSV-файл с данными из gridview. Я успешно создал кнопку, позволяющую загрузить эти данные, нажав кнопку. Однако теперь я не могу открыть страницу без появления gridView. Я попытался прокомментировать код Gridview - это просто сломало страницу. Я попытался установить gridview как Visible = "False", но это тоже не сработало. Что еще я могу сделать, чтобы предотвратить появление gridview, и пользователь должен быть непосредственно переведен в диалоговое окно загрузки?Как удалить Gridview со страницы ASPX?

+0

Вы можете разместить код страницы с ваш вопрос? – SyntaxGoonoo

+0

см. Выше для используемого кода –

+1

@CodingNovice Просто используйте 'display: none', чтобы gridview исчез, но он будет доступен для кнопки' download' – Webruster

ответ

0

обернуть Gridview в div и установить его на display:none в asp.net кода -
Ex: <div id="divhidegrid" runat="server" style="display:none;" > <asp:GridView ID="gvtest" runat="server" > </div> как этот

+0

Ответ, который вы поставили на этот вопрос, сетка теперь скрыта. Тем не менее, я решил, что я не хочу, чтобы он обрабатывал результаты в скрытом gridview как (хотя его не видно), он все еще обвиняет страницу в зависании, когда набор данных в gridview имеет большой размер. Нужно ли вообще комментировать gridview и просто разрешить пользователю использовать кнопку «загрузить в CSV»? –

+0

Как правило, вы exproting excel, используя gridview, теперь в вашем случае вам нужно изменить оценку exproting на excel. как столбцы вы exproting? .. я столкнулся с 32 столбцами около 10 000 строк .. он никогда не застрял. Посмотрите с запросами базы данных, как данные восстанавливаются – Webruster

+0

Спасибо за быстрый ответ. Он извлекается через 1 вызов БД, который запрашивает записи в таблице по идентификатору Имя. Таблица имеет 12 столбцов и 15 000 строк. При отображении в gridview он будет висеть после 2000 строк.Я хочу, чтобы он просто разрешил пользователю сбрасывать CSV из кнопки загрузки, а не заполнять Gridview на странице (в CMS) всеми записями, которые он получил. –

0

Вы можете загрузить данные в DataSet или DataTable из кода За и затем экспортировать его непосредственно в Excel/CSV без присвоения его GridView, например, как в следующем примере, чтобы экспортировать его в Excel:

Public Sub ExportToExcel(dt As DataTable) 
    If dt.Rows.Count > 0 Then 
     Dim tw As New System.IO.StringWriter() 
     Dim hw As New System.Web.UI.HtmlTextWriter(tw) 
     Dim dgGrid As New DataGrid() 
     dgGrid.DataSource = dt 
     dgGrid.DataBind() 
     'Get the HTML for the control. 
     dgGrid.RenderControl(hw) 
     'Write the HTML back to the browser. 
     Response.ContentType = "application/vnd.ms-excel" 
     Response.AppendHeader("Content-Disposition", "attachment; filename=Data.xls") 
     Me.EnableViewState = False 
     Response.Write(tw.ToString()) 
     Response.[End]() 
    End If 
End Sub 

Если вы получаете ошибки, как управления должны быть помещены в внутри тега формы вы также может потребоваться поместить следующий код в интерфейсе (код: export-data-to-excel-from-datatable-gridview-aspnet-csharp)

Public Sub VerifyRenderingInServerForm(control As Control) 
    ' Verifies that the control is rendered 
End Sub 

C# Версия выше кода:

public void ExportToExcel(DataTable dt) 
{ 
    if (dt.Rows.Count > 0) { 
     System.IO.StringWriter tw = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); 
     DataGrid dgGrid = new DataGrid(); 
     dgGrid.DataSource = dt; 
     dgGrid.DataBind(); 
     //Get the HTML for the control. 
     dgGrid.RenderControl(hw); 
     //Write the HTML back to the browser. 
     Response.ContentType = "application/vnd.ms-excel"; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=Data.xls"); 
     this.EnableViewState = false; 
     Response.Write(tw.ToString()); 
     Response.End(); 
    } 
} 

public void VerifyRenderingInServerForm(Control control) 
{ 
    // Verifies that the control is rendered 
} 
Смежные вопросы