2012-05-25 3 views
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; 
    } 

Здесь я дал название поля как «Обозначение» внутри запроса.

Но, я хочу найти имя поля, основанное на значении, заданном из пользовательского конца, вместо жесткого кодирования имени поля как «Обозначение».

Любая помощь очень ценится. Заранее спасибо.

+0

Вы можете просто добавить выпадающий список для всех имен полей и построить свой CAML на основе этих выборов. –

ответ

0

Не уверен, что о вашем запросе, но вы можете передать SPFieldLookup.LookupField свойство вашего метода GetLookFieldIDS и использовать эту переменную вместо «Обозначение»

spli_item[fieldName] = GetLookFieldIDS(emp_designation, splist_designations, lookup.LookupField); 
Смежные вопросы