2012-05-25 41 views
0

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

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; 
    } 

这里我给出了查询内的字段名称'Designation'。

但是,我想根据用户端给出的值找到字段名称,而不是将字段名称硬编码为'名称'。

任何帮助,非常感谢。提前致谢。

+0

你可以只添加一个下拉的所有字段名和构建基于这些选择的CAML。 –

回答

0

不知道你的请求,但是,你可以SPFieldLookup.LookupField属性传递给你的GetLookFieldIDS方法和用途,而不是“指定”变量

spli_item[fieldName] = GetLookFieldIDS(emp_designation, splist_designations, lookup.LookupField);