[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:后台代码如下:

ContractedBlock.gif ExpandedBlockStart.gif Code
/// <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对象开始。

           4:SPList:列表对象,上面创建的列表就属于这个范围。

    第三:部署创建的用户控件。为了部署,调试方便,我们可以在编译项目时让它自动部署到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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值