web组件设计 利用接口(IPostBackDataHandler)产生数据回传的问题

2016-01-29 13:00 27 1 收藏

web组件设计 利用接口(IPostBackDataHandler)产生数据回传的问题,web组件设计,利用接口(IPostBackDataHandler)产生数据回传的问题

【 tulaoshi.com - ASP.NET 】

1.组件源文件 IPostTest.cs
1using System;2using System.Web.UI;3using System.Web.UI.WebControls;4using System.ComponentModel;56namespace MyWebControl7{8 /// 9 /// IPostTest 的摘要说明。10 /// 11 [DefaultProperty("Text"), 12 ToolboxData("<{0}:IPostTest runat=server>")]13 public class IPostTest : System.Web.UI.WebControls.WebControl,IPostBackDataHandler14 {15 private string user;16 private string pwd;17 18 // 控件名称设置19 private string UserName 20 {21 get22 {23 return this.UniqueID + ":user";24 }25 }2627 private string PwdName28 {29 get30 {31 return this.UniqueID + ":pwd";32 }33 }3435 // 公共属性36 public string UserValue37 {38 get39 {40 return user;41 }42 }4344 public string PwdValue45 {46 get47 {48 return pwd;49 }50 }5152 /// 53 /// 将此控件呈现给指定的输出参数。54 /// 55 ///
要写出到的 HTML 编写器
56 protected override void Render(HtmlTextWriter output)57 {58 //output.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);59 output.RenderBeginTag(HtmlTextWriterTag.Table);60 output.RenderBeginTag(HtmlTextWriterTag.Tr);61 output.RenderBeginTag(HtmlTextWriterTag.Td);6263 output.AddAttribute(HtmlTextWriterAttribute.Name,UserName);64 output.AddAttribute(HtmlTextWriterAttribute.Value,((user == null)?String.Empty:user));65 output.AddAttribute(HtmlTextWriterAttribute.Type,"text");66 output.RenderBeginTag(HtmlTextWriterTag.Input);67 output.RenderEndTag();//input6869 output.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID);70 output.AddAttribute(HtmlTextWriterAttribute.Type,"hidden");71 output.AddAttribute(HtmlTextWriterAttribute.Value,"dd");72 output.RenderBeginTag(HtmlTextWriterTag.Input);73 output.RenderEndTag();//input hidden7475 output.RenderBeginTag(HtmlTextWriterTag.Br);76 output.RenderEndTag();//br7778 output.AddAttribute(HtmlTextWriterAttribute.Name,PwdName);79 output.AddAttribute(HtmlTextWriterAttribute.Value,((pwd == null)?String.Empty:pwd));80 output.AddAttribute(HtmlTextWriterAttribute.Type,"text");81 output.RenderBeginTag(HtmlTextWriterTag.Input);82 output.RenderEndTag();//input8384 output.RenderEndTag();//td85 output.RenderEndTag();//tr86 output.RenderEndTag();//table87 }88 // IPostBackDataHandler 成员8990 void IPostBackDataHandler.RaisePostDataChangedEvent()91 {92 // TODO: 添加 IPostTest.RaisePostDataChangedEvent 实现93 }9495 bool IPostBackDataHandler.LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection values)96 {97 // TODO: 添加 IPostTest.LoadPostData 实现98 user = values[UserName];99 pwd = values[PwdName];100 return false;101 }102103 }104}105




2.测试方法
将组件编译后添加入自定义控件工具栏,拖入到测试页面,增加一button按钮控件,


3.得出结论
当组件内部存在多个input子控件时,必须有一个子控件的 name 为 this.UniqueID,这样才能取得其他子控件的值回传。
a.当我试着将this.UniqueID加载到table上时,却取不到其子控件input的值。
b.上面的类型为hidden的input,可以取消,但必须将this.UniqueID加载到另外的任意一个控件上,否则取不到其值。
我这么加一个hidden类型的input,纯粹只是为了对应而已,没什么其他目的。


c.我实在对web控件了解不多,一步步学,不知道大家有没有遇到过我这样的问题。

希望高手能够指点一下感激不尽!


来源:http://www.tulaoshi.com/n/20160129/1488517.html

延伸阅读
标签: Web开发
XML数据源对象是一个ActiveX控件,允许你在XML文件和HTML页面之间操作数据。本文将向你展示如何从各种XML数据源中提取数据,以及如何使用JavaScript显示这些数据。 XML数据源对象DSO是一个微软ActiveX控件,构建在微软IE4以后的版本上。这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中。 你可以在...
标签: Web开发
现在,研究一下下面的HTML页面: <!-- example3.htm --> <HTML> <head> <title>XML DSO-example3.htm</title> <script language="JavaScript"> function load() { var XMLDso=myXML.XMLDocument; XMLDso.load("example3.xml"); } </script> </head> <body bgcolor="#FF...
标签: PHP
  <?        /*************************************************************************************        *        SQLAdmin  v2.0  -  An  SQL  Administ...
标签: Web开发
因AJAX接受数据时服务器默认是采用UTF-8的编码形式进行传送,所以在很多GB2312中文网页中应用AJAX回传数据经常会发生中文乱码。 解决AJAX中文回传乱码,其实就是将在服务器端文件加一个HEADER,指明送出的是什么编码流。比如 ASP文档就是在头部增加一行说明: Response.Charset("GB2312") PHP的示例如下: ...
孩子心理问题产生的原因 一、胎教的影响。现在很多母亲给胎儿听胎教磁带,但已发现有些幼儿由于听觉刺激不适当,反而造成失聪。胎儿应该有一个安静的生长环境,不应该受到无端的打扰。 二、没有经过爬行训练的影响。现在三分之二的城市儿童缺乏爬行训练,过早地使用学步车。婴幼儿在爬行的时候,会努力抬头,四肢、手眼的协调能力得到训练。...

经验教程

493

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部