web組件設計,利用介面(IPostBackDataHandler)產生資料回傳的問題

來源:互聯網
上載者:User
web|設計|資料|問題 1.組件源檔案 IPostTest.cs

1using System;
2using System.Web.UI;
3using System.Web.UI.WebControls;
4using System.ComponentModel;
5
6namespace MyWebControl
7{
8 /// <summary>
9 /// IPostTest 的摘要說明。
10 /// </summary>
11 [DefaultProperty("Text"),
12 ToolboxData("<{0}:IPostTest runat=server></{0}:IPostTest>")]
13 public class IPostTest : System.Web.UI.WebControls.WebControl,IPostBackDataHandler
14 {
15 private string user;
16 private string pwd;
17
18 // 控制項名稱設定
19 private string UserName
20 {
21 get
22 {
23 return this.UniqueID + ":user";
24 }
25 }
26
27 private string PwdName
28 {
29 get
30 {
31 return this.UniqueID + ":pwd";
32 }
33 }
34
35 // 公用屬性
36 public string UserValue
37 {
38 get
39 {
40 return user;
41 }
42 }
43
44 public string PwdValue
45 {
46 get
47 {
48 return pwd;
49 }
50 }
51
52 /// <summary>
53 /// 將此控制項呈現給指定的輸出參數。
54 /// </summary>
55 /// <param name="output"> 要寫出到的 HTML 編寫器 </param>
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);
62
63 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();//input
68
69 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 hidden
74
75 output.RenderBeginTag(HtmlTextWriterTag.Br);
76 output.RenderEndTag();//br
77
78 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();//input
83
84 output.RenderEndTag();//td
85 output.RenderEndTag();//tr
86 output.RenderEndTag();//table
87 }
88 // IPostBackDataHandler 成員
89
90 void IPostBackDataHandler.RaisePostDataChangedEvent()
91 {
92 // TODO: 添加 IPostTest.RaisePostDataChangedEvent 實現
93 }
94
95 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 }
102
103 }
104}
105
2.測試方法 將組件編譯後添加入自訂控制項工具列,拖入到測試頁面,增加一button按鈕控制項,3.得出結論 當組件內部存在多個input子控制項時,必須有一個子控制項的 name 為 this.UniqueID,這樣才能取得其他子控制項的值回傳。 a.當我試著將this.UniqueID載入到table上時,卻取不到其子控制項input的值。 b.上面的類型為hidden的input,可以取消,但必須將this.UniqueID載入到另外的任意一個控制項上,否則取不到其值。 我這麼加一個hidden類型的input,純粹只是為了對應而已,沒什麼其他目的。 c.我實在對web控制項瞭解不多,一步步學,不知道大家有沒有遇到過我這樣的問題。希望高手能夠指點一下感激不盡!

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。