自定义控件修改调用页面方法的问题(带代码)
想做了一个网页自动生成word自定义控件。
但是需要重写调用页面的VerifyRenderingInServerForm方法。
该怎么做?求思路。谢谢。代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
namespace HOffice
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:HOffice runat=server></{0}:HOffice>")]
public class HOffice : System.Web.UI.Page
{
private DropDownList ddl = new DropDownList();
private Button btnCreate = new Button();
/// <summary>
/// 重载 OnLoad 事件
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
EnsureChildControls();
ListItem li1 = new ListItem();
li1.Value = "1";
li1.Text = "页面生成Word文件(带控件)";
ddl.Items.Add(li1);
ListItem li2 = new ListItem();
li2.Value = "2";
li2.Text = "页面生成Word文件(去掉控件)";
ddl.Items.Add(li2);
ListItem li3 = new ListItem();
li3.Value = "3";
li3.Text = "报表生成Word文件";
ddl.Items.Add(li3);
ListItem li4 = new ListItem();
li4.Value = "4";
li4.Text = "报表生成Excel文件";
ddl.Items.Add(li4);
//ddl.Width = 80;
btnCreate.Text = "确 定";
//btnCreate.ID = "btnCreate";
//委托事件
btnCreate.Click += new EventHandler(btnCreate_Click);
}
void btnCreate_Click(object sender, EventArgs e)
{
string excelname = "wordzz";
HttpContext.Current.Response.Charset = "GB2312";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.ContentType = "application/ms-winword";
HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment;filename=" + excelname + ".doc");
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
this.Render(tw);
string strtw = Convert.ToString(tw);
//string pn = "(</?.*?/?>)";
//strtw = System.Text.RegularExpressions.Regex.Replace(strtw, pn, "");
HttpContext.Current.Response.Write(strtw);
HttpContext.Current.Response.End();
}
/// <summary>
/// 创建子控件
/// </summary>
protected override void CreateChildControls()
{
base.CreateChildControls();
this.Controls.Clear();
//加载子控件。这样子控件事件才好使
this.Controls.Add(ddl);
this.Controls.Add(btnCreate);
}
/// <summary>
/// 输出
/// </summary>
/// <param name="output"></param>
protected override void RenderContents(HtmlTextWriter output)
{
//this.VerifyRenderingInServerForm(ddl);
ddl.RenderControl(output);
btnCreate.RenderControl(output);
}
}
}