自定义控件修改调用页面方法的问题(带代码)

zyzcsdn 2007-07-20 09:01:31
想做了一个网页自动生成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);
}
}
}
...全文
211 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
没人知道么??
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
其实就是怎么动态的把
public override void VerifyRenderingInServerForm(Control control)
{
}
加载到调用页面上?
  • 打赏
  • 举报
回复
不管是否重写,都是使用

this.Page.VerifyRenderingInServerForm(....)

来调用。

看来你没有理解面向对象基本概念。
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
问题还没有解决。郁闷,刚才是个假象。
其实就是怎么在自定义控件里控制调用页面的方法重写
  • 打赏
  • 举报
回复
太长了
lishijie910123 2007-07-20
  • 打赏
  • 举报
回复
不是很懂
jackwofe 2007-07-20
  • 打赏
  • 举报
回复
看的晃眼
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
问题解决。用反射,反射出调用页面的VerifyRenderingInServerForm方法。然后让其失效
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
......
难道是我发的代码过长了?
godgreat 2007-07-20
  • 打赏
  • 举报
回复
我帮你顶吧,我喜欢看别人的代码,特别是长的
zyzcsdn 2007-07-20
  • 打赏
  • 举报
回复
顶起

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧