Gridview.RenderControl返回空字符串

时间:2011-08-18 04:59:57

标签: asp.net gridview

我正在尝试将Gridview导出为ex​​cel。我将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 个答案:

答案 0 :(得分:1)

我最好的选择是你已将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方法的问题。如果是这样,请确保您已在Page指令中设置EnableEventValidation="false"并覆盖VerifyRenderingInServerForm方法:

public override void VerifyRenderingInServerForm(Control control)
{
    return;
}