如何查看一个网站的域名解析,新闻报道最新消息今天,做网站诊断,怎么给网站做搜索功能下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配#xff1b; 2:列表的概念以及创建#xff1b; 3:利用用户控件来完成表单的增加加功能#xff1b; 4:当前域用户查看自己BUG。 BUG跟踪软件在一些… 下面的文章我想以一个具体的BUG跟踪Demo来说明MOSS的具体应用,这里面会应用到下面的知识点: 1:用户组,用户的创建,权限分配 2:列表的概念以及创建 3:利用用户控件来完成表单的增加加功能 4:当前域用户查看自己BUG。 BUG跟踪软件在一些大型公司一般都有上次在客户公司做项目时他们用一个叫做QC的软件以WEB形式展现有大概以下几点功能: 1:域用户可以提交BUG给指定的人员去解决; 2:程序员可以根据条件查询自己的BUG数据并返回处理结果; 3:管理员可以通过BUG报表清晰的看出整个项目的BUG解决程序。 非常好用。下面我就根据这一原理做一个简单的Demo,简化版的只是实现思路而已。既然要用到列表,这里就像说下WSS VS MO,目前WSS v3 共有35个命名空间,经常使用的核心名称空间如下: 1:Microsoft.SharePoint 2:Microsoft.SharePoint.WebControls 3:Microsoft.SharePoint.Utilities 4:Microsoft.SharePoint.Administration 5:Microsoft.SharePoint.Navigation 6:Microsoft.SharePoint.WebPartPages 7:Microsoft.SharePoint.Workflow 8Microsoft.SharePointSearch.Query。 WSS V3的几个核心类关系图如下SPSite是核心类之一它是SPWeb 对象集合代表站点集。SPWeb 则代表一个具体的站点它包含SPList集合。SPList代表列表或者是文档库它是SPListItem 的对象集合。SPListItem类代表列表中的行或者是文档库中的独立文档通过它可以访问到具体的行数据或者是文档内的数据。 第一测试员要想报一个bug给开发员解决那么首先要创建用户组和成员。 1:确保公司有一个统一的域环境(没有域环境谈何MOSS) 2:增加用户到域 3:在MOSS站点中添加组。操作步骤网站操作-网站设置-人员和组-新建-新建用户组。 1):首先要创建一个manager的组用来充当管理员同时给manager组加上相应的权限可以根据实际情况我这里加的是完全控制。 2):再加一个开发人员的组developer,在加权限时加上参与讨论和读取相当于可写可读 3):再加一个测试组tester权限和developer一样就行。 4:将用户划分到相应的组。在上面的三个组中分别加入相应的用户。 第二列表的创建。MOSS中的列表是整个MOSS的数据基础其实相当于数据库中的一个表。对应我们的BUG系统很明显需要一个记录BUG详情的列表这里我创建了一个名为bug2的列表为了以后的数据查询方便在这里创建列表栏名时需要注意一个问题首次创建栏名时系统会根据栏名生成系统中对应的表字段名(internal name)但它有一个要求这个栏名最好是字母且中间不要产生空格因为在生成internal name时会将空格以及中文编码这样会导致开发员做列表查询时不清楚表字段的名称。下面的栏名都是不太好的做法解决人员解决 人员jack chen,纯英文字段对于中文系统来说还是不完美的我们可以第二次修改栏名为中文这样在显示上就友好些且internal name不会因此发生变化。为了简单我这里创建了以下字段: 1:BUG标题sTitel 2:BUG描述:sDesc 3:重要性:importance,一个下拉框重要一般低三种。 4:解决人员:sUser存储域用户名称友好的(例如姜敏)不是登录名。 5:项目:project,一般在开发时一个开发员会同时接手几个项目。 6:状态status默认值为未解决。如果开发员解决后可以更改成已解决状态。 第三用户控件的创建。由于web part项目开发起来比起用户控件麻烦一点这里我采用用户控件的形式来实现。创建一个web application工程然后创建一个QCWeb.ascx控件用来让测试人员填写BUG并指给相应的开发员解决。最终的页面展示如下图。 下面比较重要的就是绑定解决人员的下拉框和提交BUG 1绑定解决人员数据代码如下。 Code/// summary /// 绑定开发人员名单 /// /summary private void getDeveloper() { DataTable dr new DataTable(); dr.Columns.Add(sName, typeof(string)); SPWeb rootWeb SPControl.GetContextSite(Context).RootWeb; foreach (SPUser user in rootWeb.Groups[developer].Users) { if (user.Name ! 系统帐户) { DataRow dt dr.NewRow (); dt[0] user.Name; dr.Rows.Add(dt); } } this.ddlDeveloper.DataSource dr; this.ddlDeveloper.DataTextField sName; this.ddlDeveloper.DataValueField sName; this.ddlDeveloper.DataBind(); } 代码说明根据rootWeb.Groups[developer].Users获取开发人员所有组员的人员集合除掉系统帐户把所有的用户信息附加到下拉列表框中。下面是关于操作用户和用户组的对象模型说明 1):SPUser:用户对象域用户 2):SPUserCollection:用户对象集合例如rootWeb.Groups[developer].Users 3):SPGroup用户组 4):SPGroupCollection用户组的集合。 2:提交BUG的事件程序如下我在开发时遇到一个问题就是如何取域用户的友好名称?例如当前的域a.com,用户名:jiangmin,域用户信息中的友好名称为姜敏。我总结以了以个几种关于取域用户信息的方法 1):User.Identity.Name; //读取域登录用户名格式为Domainname\\username 域名名称用户名称,返回结果a.com\\jiangmin 2):username返回结果jiangmin 3):SPContext.Current.Web.CurrentUser.Name,返回结果:姜敏如果当前用户是系统帐户的话会显示成系统帐户这显示是我们希望看到的结果。 Codetry { SPWeb web SPControl.GetContextSite(Context).RootWeb; SPList list web.Lists[sourceList]; SPListItemCollection lists list.Items; SPListItem listItem list.Items.Add(); listItem[sTitle] this.txtTitle.Text.Trim(); listItem[sDesc] this.txtDesc.Text; listItem[importance] this.ddlimportance.SelectedValue; SPUser developernull ; foreach (SPUser user in web.Groups[developer].Users) { if (user.Name this.ddlDeveloper.SelectedValue) { developer user; break; } } listItem[sUser] developer; listItem[project] this.ddlProject.SelectedValue; listItem.Update(); this.lblResult.Text 发布成功; } catch (Exception ex) { this.lblResult.Text 发布失败; } 代码说明BUG数据的增加主要利用了SPListItem对象的Update方法来实现数据增加。同时此对象还有一个Delete的方法用于删除数据用。 第四扩展用户控件让域用户能够查看自己的BUG数据。对于开发人员来说最理想的情况就是只显示自己的BUG数据。对于数据的查询我这里要用到SPQueyr对象的相关方法。下表是CAML查询的一些简单说明 元素说明And 并且BeginsWith 以某字符串开始的Contains 包含某字符串Eq 等于FieldRef一个字段的引用 (在GroupBy 中使用) Geq 大于等于GroupBy 分组Gt 大于IsNotNull 非空IsNull 空Leq小于等于Lt 小于Neq 不等于Now当前时间Or 或OrderBy 排序Today 今天的日期TodayIso今天的日期ISO格式Where Where子句 代码如下: Code/// summary /// 绑定BUG数据 /// /summary private void dbindMyBug() { SPWeb web SPControl.GetContextSite(Context).RootWeb; SPList list web.Lists[sourceList]; SPQuery query new SPQuery(); //检索所有的项目 query.ViewAttributes ScopeRecursiveAll; string cmal ; cmal WhereContainsFieldRef Name\sUser\ /Value Type\User\ SPContext.Current.Web.CurrentUser.Name /Value/Contains/Where; query.Query cmal; int i 1; query.RowLimit 100; do { SPListItemCollection listItems list.GetItems(query); DataTable dr listItems.GetDataTable(); this.GridView1.DataSource dr; this.GridView1.DataBind(); query.ListItemCollectionPosition listItems.ListItemCollectionPosition; i; } while (query.ListItemCollectionPosition ! null); } 上面的查询主要应用了caml查询,如对这种语言不太熟悉的话,可能利用这个工具:U2U Caml Query Builde,具体怎样操作我就不帖图了,非常容易上手,感兴趣的朋友可以去网上搜索下。值的注意的是: 1:写caml查询语句中从Where标签开始就行,不要带上Query因为系统在调用query.Query方法时会自己加上这个标签如果在查询语句中包含了Qurey标签则会出现查询结果错误的结果。 2:query.RowLimit的意思相当于SQL中的top n取前多少条记录的意思。这个属性在做自定义分页时会非常有用。 3:query.ViewFields:查询结果中要显示的字段。例如FieldRef NamesUser / 4:query.Query:查询条件这里可以包含分组与排序条件。 总结 本文利用一个简单的BUG系统的部分DEMO展示了利用用户控件来操作列表数据的过程。同时包含了WSS v3核心类的介绍用户人员和组的添加权限分配caml语言简介及查询示例。 转载于:https://www.cnblogs.com/ASPNET2008/archive/2009/01/11/1372079.html