快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

KW问题之我见

这些问题提的都蛮有意思的
不敢班门弄斧,只是就其中几个我知道的问题
发表一下自己的看法

*问题4. 谈谈 AutoEventWireup
"uestc95:AutoEventWireup属性是用来控制是否答应page framework自动调用
Page_Init和Page_Load方式的,默认情况下是true."

我的说明:在Page这个directive里vs会自动地帮你写上AutoEventWireup="false",
去掉它,系统默认为true,它倒底是个什么东东呢,uestc95的回答是完全准确的

我们可以做一个实验,把它设为true,然后再在Page_Load里添上一行代码
Response.Write("I Love you,BABE!");
然后执行,哈哈,我爱了你两次。

我们改一点东西,把在InitializeComponent()里的那句
this.Load += new System.EventHandler(this.Page_Load);注释了
再执行,哈哈,肉麻的话说一遍就可以了嘛。

答案到这里就很清晰了,有了AutoEventWireup="true",我们就没有必要在为Page的事件
显式的绑定处理方式了,系统会自动的执行Page_Init和Page_Load

*问题X:扩展问题:如何动态地,用程序(programmatically)引用一个 user control?
有什么要注重的?
众所周知user control可以通过在HTML代码里添加标记的形式加入到页面中
它也可以在程序里动态的载入
方式很简朴,先声明一个myControl
protected System.Web.UI.Control myControl;

然后这样
myControl=LoadControl("XXXXXXX.ascx");

再把它添加到一个继续于System.Web.UI.Control的WebControl里就可以了,比如Panel
myPanel.Controls.Add(myControl);

我想操作我的User Control怎么办
((你的User Control的类名)myControl).你想执行的方式;

*问题14: 假如你通过继续 System.Web.UI.Control 写了个 Custom Control,
如何加上对 client-side script 的支持?
"uestc95:比如在一个<asp:button>中想要增加一个客户端脚本事件:
Button1.Attributes.Add("onclick","alert(‘客户端的javascritp脚本’)");"

刚开始我以为是为User Control添加client-side script 的支持,仔细一看,我看错了:-(
uestc95的回答完全准确,的确值得我们崇拜他一下。

不过问题有一个地方写得不太对,应该是:
"假如你通过继续 System.Web.UI.WebControls.WebControl 写了个 Custom Control"
因为只有WebControl才有这个WebControl.Attributes Property哟!

另外再顺带一下,假如你想在你的User Control里实现类似DataGrid的
Client-side JavaScript for Custom Postback务必要让你的User Control实现
System.Web.UI.IPostBackEventHandler这个接口,然后用Page.GetPostBackEventReference传送
事件参数,再用RaisePostBackEvent来拿到参数处理提交。
这个在quickstart里有完整的例子,有爱好的朋友可以去看看

*问题16: 自己写个 control 如何支持 template?
能否在 control 中写代码读取 template 中将要放入的内容(比如控件)的值?

这个问题很希奇,高手们谁都没给出答案(因为太Easy了:-),让我们这些潜水员都急坏了
我就试着答一下吧

User Control是可以支持Template的,假如它支持,我们可以给它一个外号:Templated control
首先,Templated control 应该实现INamingContainer,防止放在Template里的控件和外面的重名
请注重,我用了应该这个词,而不是必须

其次,Templated control必须至少有一个这样的属性
属性类型是ITemplate,且属性读写方式前必须有[TemplateContainer(typeof(模板里放入的东东))]
程序是这样的:

private ITemplate  myTemplate = null;

[TemplateContainer(typeof(模板里放入的东东))]
public ITemplate MyTemplate {
           get {
              return myTemplate;
           }
           set {
              myTemplate = value;
           }
        }

然后我们要override一下CreateChildControls方式,象这样:

protected override void CreateChildControls() {

           if (myTemplate != null) {
              模板里放入的东东 i = new 模板里放入的东东;
              myTemplate.InstantiateIn(i);
              this.Controls.Add(i);
           }
        }

写到这里我发现了一个问题,就是这个"模板里放入的东东"是我new出来的
而不是分析aspx代码读到的,这带来的副作用就是我事先就确定了模板里的内容
这就不灵活了,可能也和这个问题的本意发生了矛盾。
假如有人知道,希望出来解一下惑!!!!!

第二个问题嘛,我想用FindControl这个方式应该可以搞定吧.





返回类别: 教程
上一教程: VB.NET多线程开发实例
下一教程: ASP.NET中Cookie编程的基础知识(6)

您可以阅读与"KW问题之我见"相关的教程:
· 有些问题事过境迁没必要拿beta1的问题来问的,代答KW问题
· 关于C#下写的Web Service 服务在Delphi下调用时的问题
· 我在使用C#中Treeview与解析XML碰到的问题
· Microsoft .NET 框架常见问题 (二)
· Microsoft .NET 框架常见问题(一)
    微笑服务 优质保证 索取样品