[MOSS开发]:如何使用用户控件
???? 如果是純手工開發web part,其實還是比較困難的,因為這種類型的web part是以類庫的形式出現,沒有可視化的界面,完全由代碼寫出來,包含控件的樣式,屬性,事件等等。開發過自定義控件的朋友可能會感受深一些,所以在asp.net應用程序中,開發員從來不開發自定義控件也非常常見。這種純代碼的開發方式的優點是靈活性強,而且部署方便,它只會包含一個DLL。但如果界面特別復雜的話,要想實現還是有一定難度的,搞不好因為一條簡單的HTML代碼的錯誤,會導致整個控件樣式的出錯。
?? ? 在MOSS開發中,還好微軟支持直接嵌套已經創建好的用戶控件。不過不能直接用,它需要一個容器控件來包含它。這里的容器控件可以自己寫,也可以用已經非常成熟的QuickPart。下面我將以一個小小的搜索列表的例子來說明如何嵌套用戶控件到MOSS網站中。
??? 列表說明:我創建了一個列表,共有兩列:標題和解決方案。內容如下圖:
?
??? 需求:創建一個web part,包含一個文本框和一個搜索按鈕,實現列表的標題搜索。
??? 第一:部署容器控件QuickPart。
??????? 1):QuickPart組件可以上網上搜索下,然后把它部署到網站bin目錄;
??????? 2):修改配置文件,注冊容器控件;
<SafeControl?Assembly="QuickPart,?Version=1.0.0.0,?Culture=neutral,?PublicKeyToken=2d0bb71b2dd16f9e"?Namespace="Microsoft.PRC.SharePoint"?TypeName="*"?Safe="True"?/>
?
??????? 3):把新增加的控件導入到庫中,QuickPart總共會有兩個控件:
?????????? 1>:Microsoft.PRC.SharePoint.ComsumerQuickPart;
?????????? 2>:Microsoft.PRC.SharePoint.ProviderQuickPart。
??? 第二:創建用戶控件。一般在創建web part時,我們創建的是web part工程,現在要使用用戶控件,所有我們要創建一個web application項目,然后在里面創建一個名為CostomList.ascxC的用戶控件,實現搜索當前網站的列表信息。從工具箱中分別加入一個GridView,一個TextBox,一個Button,
????????? 1:前臺部分代碼如下:
<asp:GridView?ID="GridView1"?runat="server"?AutoGenerateColumns="False">????<Columns>
????????<asp:TemplateField?HeaderText="標題">
????????????<ItemTemplate>
????????????????<a?href?='DispForm.aspx?ID=<%#?Eval("ID")%>'>
????????????????<%#?Eval("Name")?%>
????????????????</a>
????????????</ItemTemplate>
????????</asp:TemplateField>
????</Columns>
</asp:GridView>
<asp:TextBox?ID="tbKey"?runat="server"></asp:TextBox>
<asp:Button?ID="btnSearch"?runat="server"?onclick="btnSearch_Click"
????Text="搜索3"?/>
?
???????? 代碼說明:其中的字段:ID,Name是創建列表時自動生成的,如果不清楚的話,可以先將AutoGenerateColumns設置成true,看查詢內容的全部字段內容,然后根據需要選取自己需要的內容即可。???
??????? 2:后臺代碼如下:
///?<summary>
????????///?獲取列表的數據
????????///?</summary>
????????///?<returns></returns>
????????private?void??GetData()
????????{
???????????
????????????SPSite?site?=?SPContext.Current.Site;
????????????SPWeb?web?=?site.OpenWeb();
????????????SPList?list?=?web.Lists["我的自定義列表"];
????????????SPQuery?query?=?new?SPQuery();
????????????//檢索所有的項目
????????????query.ViewAttributes?=?"Scope='RecursiveAll'";
????????????string?cmal?=?string.Format("<Where><Contains><FieldRef?Name='Title'?/><Value?Type='Text'>{0}</Value></Contains></Where>",?this.tbKey.Text.ToString());
????????????query.Query?=?cmal;
????????????int?i?=?1;
????????????query.RowLimit?=?1;
????????????do
????????????{
????????????????SPListItemCollection?listItems?=?list.GetItems(query);
????????????????this.GridView1.DataSource?=?listItems;
????????????????this.GridView1.DataBind();
???????????????
????????????????query.ListItemCollectionPosition?=?listItems.ListItemCollectionPosition;
????????????????i++;
????????????}
????????????while?(query.ListItemCollectionPosition?!=?null);
????????
????????}
????????///?<summary>
????????///?搜索事件
????????///?</summary>
????????///?<param?name="sender"></param>
????????///?<param?name="e"></param>
????????protected?void?btnSearch_Click(object?sender,?EventArgs?e)
????????{
????????????this.GetData();
????????}
??????? 代碼說明:
?????????? 1:SPQuery是MOSS中的一個數據查詢方法,SPQuery有三個重要的屬性:
??????????????? 1):ViewAttributes:設置檢索的列表的范圍(Scope),是否包含子文件(Default、Recursive、RecursiveAll和FilesOnly)。
????????? ? ? ? 2):RowLimit:限制返回的行數,類似于SQL中的select top n。
??????????????? 3):ListItemCollectionPosition,與分頁信息相關。
?????????? 2:SPSite:web 應用程序下的網站集;
??????? ?? 3:SPWeb:網站集下的每一個站和子站點,要想訪問一個列表就需要從SPWeb對象開始。
??? 第三:部署創建的用戶控件。為了部署,調試方便,我們可以在編譯項目時讓它自動部署到MOSS網站:
???????? 1:復制生成的DLL文件到網站BIN目錄,方法是,項目屬性-生成-輸出目錄,如下圖:
?
???????? 2:復制CostomList.ascx文件到Inetpub"wwwroot"wss"VirtualDirectories"20983"wpresources,方法是:項目屬性-生成事件,如下圖:
?
???? 第四:在要編輯的頁面中添加ProviderQuickPart控件,在用戶控件列表中就能看到我們剛才創建的用戶控件了,選中添加就行了。
?
???? 總結:上面的就是如果嵌套用戶控件的過程,比起純代碼開發的web part還是容易不少,畢竟是可視化操作,而且以前的asp.net知識都可以用上,具有不容易出錯,方便調試的優點。
???? ?
轉載于:https://www.cnblogs.com/ASPNET2008/archive/2009/01/07/1371101.html
總結
以上是生活随笔為你收集整理的[MOSS开发]:如何使用用户控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清除浮动mini版
- 下一篇: 360浏览器打开html不能正常显示图片