2012-12-03 43 views
3

我想在加載頁面時在人員編輯器(Web部件)中顯示分享點人物/分組值的值。這是我用來獲取網頁部分中顯示的值的代碼在人員編輯器中顯示分享點人物/分組字段列表的值

if(SPContext .Current .ListItem .ID >= 1) 
     using (SPSite site = new SPSite("sitename")) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 
       var id = SPContext.Current.ListItem.ID; 
       SPList lists = web.Lists["DDClist"]; 
       SPListItem item = lists.GetItemById(id); 

       { 

        string test = Convert.ToString(item["Project No"]); 
        tb_pno.Text = test; 
        string test2 = Convert.ToString(item["Project Title"]); 
        tb_pname.Text = test2; 
        string test3 = Convert.ToString(item["DDC No"]); 
        tb_idcno.Text = test3; 
        string test4 = Convert.ToString(item["Date In"]); 
        TextBox3.Text = test4; 

       } 
      } 
     } 

有沒有辦法用人工編輯器做同樣的事情?

回答

2

這一切都有點棘手;當我收到這樣做,我用下面讓SPUser對象了實地的:

SPUser singleUser = new SPFieldUserValue(
    item.Web, item["Single User"] as string).User; 

SPUser[] multipleUsers = ((SPFieldUserValueCollection)item["MultipleUsers"]) 
    .Cast<SPFieldUserValue>().Select(f => f.User); 

我不知道爲什麼一個用戶存儲爲一個字符串,但多個用戶存儲一個特定的對象;它可能也不一致,所以你可能需要調試一下,看看你的字段是什麼類型。

ArrayList entityArrayList = new ArrayList(); 
foreach(SPUser user in multipleUsers) // or just once for a single user 
{ 
    PickerEntity entity = new PickerEntity; 
    entity.Key = user.LoginName; 
    entity = peMyPeople.ValidateEntity(entity); 
    entityArrayList.Add(entity); 
} 
peMyPeople.UpdateEntities(entityArrayList); 

這也進行驗證:

一旦你有這些SPUser S,您可以使用該帳戶名稱如下(很囉嗦)填充您PeopleEditor控制

某種用戶。

如果此控件上顯示的頁面可能被回發,則需要在回發期間完成以下操作,以便正確回撥值;我把它放在PreRender但它可以在生命週期的其他地方發生:

protected override void OnPreRender(EventArgs e) 
{ 
    if (IsPostBack) 
    { 
     var csa = peMyPeople.CommaSeparatedAccounts; 
     csa = peMyPeople.CommaSeparatedAccounts; 
    } 
} 

如果你想檢查任何錯誤消息,控制爲您生成(如果用戶輸入不正確的),你需要這樣做switchout已經:

var csa = usrBankSponsor.CommaSeparatedAccounts; 
csa = usrOtherBankParties.CommaSeparatedAccounts; 
//ErrorMessage is incorrect if you haven't done the above 
if (!String.IsNullOrEmpty(usrBankSponsor.ErrorMessage)) 
{ 
    ... 
} 

這真的不是非常好,有可能是把它處理一個更好的方法,但是這是我的經驗到目前爲止的結果,所以希望它會爲你節省一些時間。

+0

謝謝!它幫助了很多 – MRu

相關問題