2009-09-08 2 views
0

Я пытаюсь экспортировать datagrid в файл excel. Он правильно преобразует asp: BoundColumn, но столбцы шаблонов с помощью кнопки ссылки или кнопки изображения не могут быть преобразованы. Эти ячейки преобразуются как пустая ячейка.Проблема при экспорте сетки в excel

Вот код, который экспортирует элементы управления, чтобы преуспеть.,

Public Shared Sub Export(ByVal Mime As String, ByVal Filename As String, ByVal Response As HttpResponse, ByVal Control As Control) 

    Dim stringWrite As New System.IO.StringWriter() 
    Dim htmlWrite As New System.Web.UI.HtmlTextWriter(stringWrite) 
    Response.Clear() 
    Response.Buffer = True 
    Response.Charset = String.Empty 
    Response.ContentType = Mime 
    Response.AddHeader("Content-Disposition", "filename=" & Filename) 
    Control.RenderControl(htmlWrite) 
    Response.Write("<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><head id=""Head1"" runat=""server""><meta http-equiv=""content-type"" content=""text-html; charset=utf-8""></head><body>" & stringWrite.ToString & "</body></html>") 
    Response.End() 
End Sub 

Где эта проблема может быть? Есть идеи? Спасибо заранее.

+0

вам нужно ImageButton первенствует, а? –

+0

На самом деле моя проблема заключается не в visiblity of imagebutton. это хорошо, чтобы не показывать это, но я хочу знать причину. но для linkbutton да мне это нужно, по крайней мере, его текст. –

ответ

1

В основном проблема заключается в рендеринге нелитеральных элементов управления вне серверной формы.

Вот несколько статей, посвященных этому с помощью GridView, но также должны хорошо работать с DataGrid. Главное, на что обратить внимание, - это функция, которую они вызывают перед рендерингом сетки, которая проходит через элементы управления в сетке и преобразует любые LinkButtons и т. Д. В литералы.

Статья 1: A simpler, more "hard-coded" way, specifically for LinkButtons and Dropdownlists (смотреть в сторону дна для DisableControls функции)

Статья 2: A more robust and flexible method to deal with different types of controls