员工ID反映在由列而不是显示名称创建的中

时间:2012-10-05 12:01:04

标签: asp.net sharepoint sharepoint-2010 sharepoint-2007

我编写了一个程序,用于将数据从Excel工作表导入到sharepoint 2007列表中。导入大约11000个数据。我使用了以下代码。我的查询是我想在“创建者”栏中输入“员工的显示名称”。并且我在代码中的excel表n中提供相同的内容。但是在导入数据之后,我发现很少有员工数据反映了由列创建的名称。但少数它只反映EMPID或EMPID +名称。我调试代码它需要显示正确的字符串,但我不明白它给出了这样的结果。另外我在我的机器上运行prog而不是服务器,所以这是bcoz。因为我正在使用测试服务器,然后才会部署到生产。

代码:

protected void btnImport_Click(object sender, EventArgs e)

        {



            using (SPSite site = new SPSite("URL"))

            {

                using (SPWeb web = site.OpenWeb())

                {

                    webapp = web.Site.WebApplication;

                    webapp.FormDigestSettings.Enabled = false;

                    SPList list = web.Lists["List name"];



                    string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Test.xlsx;Extended Properties=Excel 12.0";

                    OleDbConnection oledbConn = new OleDbConnection(connString);

                    oledbConn.Open();

                    OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);//contents from sheet1 is selected

                    OleDbDataAdapter oleda = new OleDbDataAdapter();

                    oleda.SelectCommand = cmd;

                    DataSet ds = new DataSet();

                    oleda.Fill(ds, "Employees");

                    DataTable dt = ds.Tables["Employees"];

                    DataView dv = new DataView(dt);

                    SPSecurity.RunWithElevatedPrivileges(delegate()

                    {

                        using (SPSite elevatedSite = new SPSite("URL"))

                        {

                            elevatedRootWeb = elevatedSite.OpenWeb();

                        }

                    });

                    foreach (DataRowView drv in dv)

                    {

                        EMPID = drv["Emp id"].ToString();

                        DispName = drv["Name"].ToString();

                        Title = drv["Title"].ToString();

                        getid = new SPQuery();

                        getid.Query = "<Where><Eq><FieldRef Name=’EMPID’ /><Value Type='Text'>" + EMPID + "</Value></Eq></Where><OrderBy><FieldRef Name='ID'/></OrderBy>";

                        check = list.GetItems(getid).GetDataTable();

                        if (check == null)

                        {

                                try

                                {





                                    elevatedRootWeb.AllowUnsafeUpdates = true;

                                    UserItem = list.Items.Add();

                                    UserItem["Emp id"] = EMPID;

                                    UserItem["Title"] = Title;

                                    test = elevatedRootWeb.EnsureUser(PSNumber).ID + ";#" + DispName;

                                    UserItem["Author"] = test;

                                    UserItem.Update();

                                    list.Update();

                                    count++;

                                    elevatedRootWeb.AllowUnsafeUpdates = false;



                                    using (StreamWriter w = File.AppendText("D:\\Errorlog_SP2010.txt"))

                                    {

                                        Log(PSNumber + "Inserted successfully", w);



                                        w.Close();

                                    }

                                }

                                catch (Exception ex)

                                {

                                    HttpContext.Current.Response.Write("<script>alert('Exception on adding item " + ex.Message + "')</script>");

                                    using (StreamWriter w = File.AppendText("D:\\Errorlog_SP2010.txt"))

                                    {

                                        Log(ex.ToString()+ PSNumber, w);



                                        w.Close();

                                    }


                                }

                        }

1 个答案:

答案 0 :(得分:0)

检查"_catalogs/users/simple.aspx"列表,查看该网站上的用户是否存储了正确的信息。

这很重要,因为“作者”字段从此列表中显示的内容中获取值,而不是您设置的内容。

有关如何解决此问题,请参阅this question