本文實例為大家分享了Asp.net單選、復選框控件的具體實現代碼,供大家參考,具體內容如下
將常用的jquery插件封裝成控件也是個不錯的選擇。
先看看效果:
1.新建類庫項目,創建數據源類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[Serializable] public class Select2Item { public bool Selected { get ; set ; } public string Text { get ; set ; } public string Value { get ; set ; } public Select2Item() { } public Select2Item( string text, string value) { this .Text = text; this .Value = value; } public Select2Item( string text, string value, bool selected) { this .Text = text; this .Value = value; this .Selected = selected; } } |
2.創建控件類CheckList,繼承與WebControl,并定義 public List<Select2Item> Items數據項屬性。
3.引入腳本文件及樣式文件
a.創建腳本或樣式文件,設置文件的屬性-生成操作-嵌入的資源
b.需要在namespace上添加標記 [assembly: WebResource("命名空間.文件夾名.文件名", "mime類型")]
如:
[assembly: WebResource("Control.Style.checklist.css", "text/css",PerformSubstitution = true)]
[assembly: WebResource("Control.Scripts.checklist.js", "application/x-javascript")]
如果css文件里面存在圖片的話,同樣將圖片設置為嵌入的資源,在css中的寫法為<%=WebResource("命名空間.文件夾名.文件名")%>
PerformSubstitution 表示嵌入式資源的處理過程中是否分析其他Web 資源 URL,并用到該資源的完整路徑替換。
c.重寫protected override void OnPreRender(EventArgs e),引入嵌入的腳本或樣式文件
if(Page!=null) Page.Header.Controls.Add(LiteralControl),將<script><link>標簽放到LiteralControl中,然后將LiteralControl添加到Page.Header中,最后在頁面里你就會看到引入的<script><link>標簽。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
protected override void OnPreRender(EventArgs e) { if ( this .Page != null ) { StringBuilder sbb = new StringBuilder(); sbb.Append( string .Format(STYLE_TEMPLATE, Page.ClientScript.GetWebResourceUrl( this .GetType(), "HandControl.Style.checklist.css" ))); sbb.Append( string .Format(SCRIPT_TEMPLATE, Page.ClientScript.GetWebResourceUrl( this .GetType(), "HandControl.Scripts.checklist.js" ))); bool hascss = false ; LiteralControl lcc = new LiteralControl(sbb.ToString()); lcc.ID = "lccheck" ; foreach (Control item in Page.Header.Controls) { if (item.ID == "lccheck" ) hascss = true ; } if (!hascss) Page.Header.Controls.Add(lcc); } base .OnPreRender(e); } |
4.重寫控件的protected override void Render(HtmlTextWriter writer)方法
這里主要是渲染控件的html,根據你的控件而定。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
protected override void Render(HtmlTextWriter writer) { if (Items.Count > 0) { writer.Write( "<div id='div" + this .ClientID + "' class='c01-tag-div' mul='" + (Multiple == true ? "1" : "0" ) + "'>" ); if (Multiple == false ) writer.Write( "<input name='tb" + this .ClientID + "' type='hidden' value='" + Items[0].Value + "' />" ); else writer.Write( "<input name='tb" + this .ClientID + "' type='hidden' />" ); bool first = true ; foreach (var item in Items) { if (Multiple == false ) { if (item.Selected && first) { writer.Write( "<a csharp" id="highlighter_501053">
6.保存狀態
7.單選和復選的設置,在js中控制 效果圖:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。 延伸 · 閱讀
精彩推薦
|