Gridvew.RenderControl возвращает пустую строку - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь экспортировать Gridview в Excel.Я связываю gridview с коллекцией и вижу, что в ней 6 строк данных, но когда я вызываю RenderControl, он возвращает пустую строку.Ниже приведен код, который я использую

Gridview1.DataSource = data;
Gridview1.DataBind();
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
Gridview1.RenderControl(htw);
var outputHtml = sw.ToString();

, когда я проверяю outputHtml, это пустая строка.Что я делаю неправильно в этом куске кода.

Следует отметить, что gridview находится внутри формы с тегом runat = 'server', и я не переопределил метод VerifyRenderingInServerForm.

1 Ответ

1 голос
/ 19 августа 2011

Лучше всего, чтобы вы установили видимость GridView на false.Это предотвратит рендеринг элемента управления, потому что ... теперь он невидим.В результате получается пустая строка.

Если вы не хотите показывать GridView, просто установите для параметра Visibility значение true, прежде чем выполнять код рендеринга, и установите его впоследствии:

    gv_sample.Visible = true;
    System.IO.StringWriter sw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
    gv_sample.RenderControl(htw);
    var outputHtml = sw.ToString();
    gv_sample.Visible = false;

Возможно, сейчас у вас возникнут проблемы с методом RenderControl.Если это так, убедитесь, что вы установили EnableEventValidation="false" в директиве Page и переопределите метод VerifyRenderingInServerForm:

public override void VerifyRenderingInServerForm(Control control)
{
    return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...