share
在asp.net中與資料打交道接觸最多的可能就是各類資料來源控制項了,這篇在前面的基礎上構建乙個模板化的資料繫結控制項
資料繫結控制項
我們現在建立乙個繼承compositedataboundcontrol的控制項,其可以在中顯示一批資料項
和前面的內容一樣,我們首先實現乙個實現idataitemcontainer的控制項
publicclass viewitems : webcontrol, idataitemcontainer
}
publicint dataitemindex
}
publicint displayindex
}
protectedoverride htmltextwritertag tagkey
}
public viewitems(object dataitem,int index)
}然後建立包含其為子項的控制項
publicclass blockview: compositedataboundcontrol
set
}
protectedoverride htmltextwritertag tagkey
}
protectedoverride
int createchildcontrols(system.collections.ienumerable datasource, bool databinding)
databind(false);
return counter;
}
}這裡的blockview支援格式化資料項的itemtemplate,而且使用該控制項的時候,必須提供itemtemplate
這裡的createchildcontrols()與前面幾篇中的同名函式是不一樣的,這裡重寫的是compositedataboundcontrol的方法
該方法包含2個引數:datasource:表示資料來源中的所有資料項
databinding:表示從資料來源中檢索資料項時是否呼叫了createchildcontrols()
事實上,blockview每次生成其資料項,都會呼叫createchildcontrols(),當其第一次繫結到資料來源中時,引數datasource會在資料來源控制項中取得資料項。
上面的**要注意的是databind(),因為其要在子控制項建立了之後才會被呼叫,若控制項中包含了資料繫結表示式,在必須呼叫databind()
下面演示一下其用法:
稍微控制一下樣式
.block
.block頁面:div
<div>
<customer:blockview
id="blockview1"
cssclass="block"
runat="server"
datasourceid="sqldatasource1">
<itemtemplet
>
itemtemplet>
customer:blockview>
<asp:sqldatasource
id="sqldatasource1"
runat="server"
connectionstring=""
selectcommand="select [id], [assetcode] from [assetinfo]">
asp:sqldatasource>
div>這些標籤還是很熟悉的..
看看效果吧:)
本文參考了《asp.net 揭秘 卷2》
自定義控制項的構建 9
share 前面重點介紹了parsechildren特性,當其為false時,控制項的內容會自動的解析成控制項的子控制項,這時控制項內包含的所有內容都會新增到controls集合中,而控制項內任何非伺服器控制項將解析成literal控制項,某些時候可能僅允許一種控制項被新增到controls集合裡。...
自定義控制項的構建 8
share 在前面的幾節基礎上,現在我們開始涉足構建物件集合的控制項,以gridview而言,其內部就包含了多個databoundfield控制項來表示所要顯示的各個列。首先了解名為parsechildren的特性,其用來決定如何解析控制項包含的內容 值為true時,控制項所包含的內容將作為控制項的...
自定義控制項的構建 7
share 在處理回傳事件中,還需要考慮的因素就是事件引數和選項 傳遞歸傳事件引數 前面曾提到getpostbackclienthyperlinkc 可以為其提供乙個可選引數,其在引發回傳時從瀏覽器傳到伺服器,它的值傳遞到伺服器的 raisepostbackevent 中,這裡實現的功能類似於gri...