日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作

發布時間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

???? 下面的文章我想以一個具體的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,返回結果:姜敏,如果當前用戶是系統帳戶的話會顯示成系統帳戶,這顯示是我們希望看到的結果。

Code
try
????????????{
???????????????
????????????????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?developer
=null?;
????????????????
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?=?"Scope='RecursiveAll'";
????????????
string?cmal?="";
????????????cmal?
=?"<Where><Contains><FieldRef?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 Name="sUser" />;

????????? 4:query.Query:查詢條件,這里可以包含分組與排序條件。

?

?????? 總結:

??????????????本文利用一個簡單的BUG系統的部分DEMO展示了利用用戶控件來操作列表數據的過程。同時包含了WSS v3核心類的介紹,用戶人員和組的添加,權限分配,caml語言簡介及查詢示例。
?

轉載于:https://www.cnblogs.com/ASPNET2008/archive/2009/01/11/1372079.html

總結

以上是生活随笔為你收集整理的[MOSS开发]:通过简单BUG跟踪Demo阐述用户控件对列表的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。