[MOSS开发]:如何使用用户控件
2009-01-07 21:17
302 查看
如果是纯手工开发web part,其实还是比较困难的,因为这种类型的web part是以类库的形式出现,没有可视化的界面,完全由代码写出来,包含控件的样式,属性,事件等等。开发过自定义控件的朋友可能会感受深一些,所以在asp.net应用程序中,开发员从来不开发自定义控件也非常常见。这种纯代码的开发方式的优点是灵活性强,而且部署方便,它只会包含一个DLL。但如果界面特别复杂的话,要想实现还是有一定难度的,搞不好因为一条简单的HTML代码的错误,会导致整个控件样式的出错。
在MOSS开发中,还好微软支持直接嵌套已经创建好的用户控件。不过不能直接用,它需要一个容器控件来包含它。这里的容器控件可以自己写,也可以用已经非常成熟的QuickPart。下面我将以一个小小的搜索列表的例子来说明如何嵌套用户控件到MOSS网站中。
列表说明:我创建了一个列表,共有两列:标题和解决方案。内容如下图:
/// <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知识都可以用上,具有不容易出错,方便调试的优点。
在MOSS开发中,还好微软支持直接嵌套已经创建好的用户控件。不过不能直接用,它需要一个容器控件来包含它。这里的容器控件可以自己写,也可以用已经非常成熟的QuickPart。下面我将以一个小小的搜索列表的例子来说明如何嵌套用户控件到MOSS网站中。
列表说明:我创建了一个列表,共有两列:标题和解决方案。内容如下图:
/// <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知识都可以用上,具有不容易出错,方便调试的优点。
相关文章推荐
- android中如何开发用户控件(使用已有控件组合而成的控件,非用户视图)
- (来源于我天一校友网) moss:如何发布写好的用户控件到moss网站中
- 基于地图开发控件GMap.Net 使用 (五) 原创 用户自定义标签图片
- C# 如何在winform中使用wpf用户控件
- ASP.NET项目开发中日期控件DatePicker如何使用
- 使用MVC框架中要注意的问题:如何在页面和用户控件之间传递数据
- 如何:使用 Windows 窗体 TextBox 控件创建密码文本框 .NET Framework 2.0 其他版本 密码框是一种 Windows 窗体文本框,它在用户键入字符串时显示占位符。 创
- [WPF+ArcEngine]如何在WPF项目中使用ArcEngine的控件做开发
- [原创]用户控件中使用Js,如何在客户端引用用户控件中某个控件的ID
- Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
- 开发和使用Web用户控件
- APP开发如何才能达到用户使用浏览的方便性?
- 如何在ASP.NET程序中使用报表查看器控件并传递用户凭据
- 详解如何在Sbo Add-on开发中使用Folder控件 推荐
- 如何使用Eclipse开发用户图形界面
- 使用MVC框架中要注意的问题(五):如何在页面和用户控件之间传递数据
- 一个初级的使用GDI+开发的颜色拾取器用户控件
- Xcode 开发 控件如何和代码配合使用
- 开发和使用Web用户控件
- 开发和使用Web用户控件