jp2*_*ode 4 .net c# asp.net datagrid
我有一个DataGrid,我试图在单击一个ASP.NET 按钮时导出.

确切的错误是:
必须将带有'LinkButton'类型的控件'ctl00_body_RollupDG_ctl02_btnShowGLdetail'放在带有runat = server的表单标记内.
我在这里发现了类似的问题,但似乎都表明这是因为ASP.NET控件没有放在ContentPlaceHolder中,或者ContentPlaceHolder 没有放在RunAt Server表单中.
我有这两个,所以这不是这里的情况.
我的ExportExcelFile方法捕获RenderControl()处的HttpException(如上面的屏幕截图所示).该代码如下:
protected void ExportExcelFile(object Sender, EventArgs e) { //export to excel
var grdResults = (periodCriteria.SelectedValue == "year") ? RollupDG : QuarterDG;
var response = HttpContext.Current.Response;
response.Clear();
response.Charset = String.Empty;
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment; filename=GlBudgetReport.xls");
using (var sw = new StringWriter()) {
using (var htw = new HtmlTextWriter(sw)) {
grdResults.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如下面的" 查找结果"框中所示,有几个ASP.NET LinkButton控件,但每个控件都包含该runat="server"子句.

看来DataGrid中的LinkButton数据很难呈现为纯文本.
如果没有,我的导出方法中是否有可以配置的内容,以便将DataGrid数据全部解释为文本?
我可以创建一个空白的DataGrid,然后遍历填充的DataGrid,只写入每个字段的文本 - 但是如果绝对必要,我只想这样做.
我相信你只需要覆盖检查表单的方法.您无需向该方法添加任何逻辑.只需将以下内容添加到您的代码中:
public override void VerifyRenderingInServerForm(Control control) { }
Run Code Online (Sandbox Code Playgroud)
ETA:您可能还需要EnableEventValidation="false"在<%@Page />元素中设置.
| 归档时间: |
|
| 查看次数: |
4526 次 |
| 最近记录: |