0

我有一个名为“名称”的列表,其中包含名称代码和名称。我有另一个名为“员工”的列表,其中包含员工姓名和指定名称(作为查找字段)。我可以使用以下代码将值插入“员工”列表。

    protected void AddEmp(object sender, EventArgs e)
    {
      string emp_name = txtEmployeeName.Text;
      string emp_designation = ddlDesignation.SelectedValue;                    
      using (SPSite site = new SPSite("My Site"))
      {
       using (SPWeb web = site.OpenWeb())
       {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
         web.AllowUnsafeUpdates = true;
         SPList splist_employees = web.Lists["Employee"];
         SPList splist_designations = web.Lists["Designations"];
         SPListItemCollection splc_items = splist_employees.Items;
         SPListItem spli_item = splc_items.Add();
         SPFieldLookup lookup = splist_employees.Fields["Designated"] as SPFieldLookup;
         string fieldName = lookup.LookupField;
         spli_item["Employee Name"] = emp_name;
         spli_item[fieldName] = GetLookFieldIDS(emp_designation, splist_designations);
         spli_item.Update();
         });
        }
      }
    }

    public static string GetLookFieldIDS(string lookupValues, SPList lookupSourceList)
    {
     string id = string.Empty;
     SPFieldLookupValueCollection lookupIds = new SPFieldLookupValueCollection();
     SPQuery query = new Microsoft.SharePoint.SPQuery();
     query.Query = "<Where><Eq><FieldRef Name='Designation' /><Value type='Text'>"+lookupValues + "</Value></Eq></Where>";
     SPListItemCollection listItems = lookupSourceList.GetItems(query);
     foreach (Microsoft.SharePoint.SPListItem item in listItems)
     {
      id = item.ID.ToString();
     }
     return id;
    }

在这里,我在查询中将字段名称指定为“指定”。

但是,我想根据用户端给出的值来查找字段名称,而不是将字段名称硬编码为“指定”。

任何帮助是极大的赞赏。提前致谢。

4

1 回答 1

0

不确定您的请求,但您可以将SPFieldLookup.LookupField属性传递给您的 GetLookFieldIDS 方法并使用该变量而不是“指定”

spli_item[fieldName] = GetLookFieldIDS(emp_designation, splist_designations, lookup.LookupField); 
于 2012-05-25T13:29:30.453 回答