0

私のプログラムは、リスト sharepoint のバージョン履歴要素のデータを取得し、データを txt
ファイルに入れます。"Name" ListItems と "Location" を出力します。すべて問題ありませんが、残念ながら非常に悪い出力「名前」です。私の意見では、この行の問題

string strFirstName = Convert.ToString(objVersion["Name"]);

悪い出力:

名前 4049;#Zabiyakin Makar ,#STALT\Zabiyakin,# Zabiyakin@stalt.ru,#,#Zabiyakin Makar 場所 Â 名前 4049;#Zabiyakin Makar ,#STALT\Zabiyakin,# Zabiyakin@stalt.ru,#,#Zabiyakin Makarロケーション ホーム

私は出力が欲しい:

名前 ザビヤキン・マカールの場所 名前 ザビヤキン・マカールの場所 ホーム

コード プログラム :

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.IO;
namespace ControlTest.Layouts.ControlTest
{
    public partial class ApplicationPage1 : LayoutsPageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //string ListUrl = "/Deps/sup/Lists/Whereabouts";
            SPList objList = SPContext.Current.Web.Lists["Whereabouts"];
            SPQuery objQuery = new SPQuery();
            objQuery.Query = "<Where><Gt><FieldRef Name=\"ID\"/><Value                 
            Type=\"Counter\">0 </Value></Gt></Where>";
            SPListItemCollection objItemColl = objList.GetItems(objQuery);  
            foreach (SPListItem objItem in objItemColl) 
            {
                SPListItemVersionCollection objVerisionColl = objItem.Versions;
                if (objVerisionColl.Count > 1)
                {
                    foreach (SPListItemVersion objVersion in objVerisionColl)  
                    {
                        int versionID = objVersion.VersionId; 
                        DateTime timeofcreation = objVersion.Created;  
                        string strVersionLabel = objVersion.VersionLabel;
                        SPListItem objLstItm = objVersion.ListItem;
                        string strFirstName = Convert.ToString(objVersion["Name"]);
                        //string strFirstName = 
                        ((SPFieldUserValue)objVersion["Name"]).User.Name;
                        string strPlace = Convert.ToString(objVersion["location"]);
                        System.IO.TextWriter writer = new 
                        StreamWriter(@"C:\custommenuoutput.txt", true);
                        writer.WriteLine(string.Format("Name: {0} location: {1}", 
                        strFirstName, strPlace));
                        writer.Close();

                    }

                }
              }
           }
     }
  }

良いアウトプットをする方法は?私を助けてください !

4

1 に答える 1

1

フレンドリ名を取得するには、SPUserFieldValueを使用する必要があります。以下のサンプルを参照してください。

SPSite site = new SPSite("http://spvm");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["DemoList"];
SPListItem item = list.GetItemById[1];
SPFieldUserValue objUserFieldValue = new SPFieldUserValue(web, item["User"].ToString());

このオブジェクトSPFieldUserValue(objUserFieldValue)を取得したら、次の方法でそのユーザーのすべてのプロパティを取得できます。

objUserFieldValue.User.LoginName;
objUserFieldValue.User.Name;
objUserFieldValue.User.ID;
objUserFieldValue.User.Groups;
objUserFieldValue.User.Roles;
objUserFieldValue.User.Email;
objUserFieldValue.User.Sid;
objUserFieldValue.User.UserToken;
于 2012-05-19T22:36:18.920 に答える