我被困在这里,无法转换类型“System.String”的对象键入“System.Web.UI.Control”
我有我想要打印动态表。所以我让会议把它传递到网络控制。 不幸的是,它不流畅。
这里是我的代码:
protected void bt_print_click(object sender, EventArgs e)
{
StringWriter sw = new StringWriter();
HtmlTextWriter w = new HtmlTextWriter(sw);
panelBilling.RenderControl(w);
string s = sw.GetStringBuilder().ToString();
Session["ctrl"] = s;
ClientScript.RegisterStartupScript(this.GetType(), "onclick", "<script language=javascript>window.open('Print.aspx?rep=1','PrintMe','height=680px,width=1024px,scrollbars=1');</script>");
}
而且Print.aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
Control ctrl = (Control)Session["ctrl"];
PrintHelper.PrintWebControl(ctrl);
}
我总是得到错误信息:
“无法转换的对象键入'System.String'键入 'System.Web.UI.Control'。“
上
(Control)Session["ctrl"]
一部分。我很多时候都使用这种方法,之前没有任何问题。任何人有任何想法?谢谢。
如果将面板存储在'Session'中,会发生什么? 'Session [“ctrl”] = panelBilling;' –
我必须说清楚,“panelBilling”是Div的ID,而不是Panel。我之前使用Panel,但它也不起作用。它说,面板是不可序列化的(或类似的东西,我不记得确切) – arera
所以你添加runat =“server”属性到你的div?你不应该那样做... –