0% found this document useful (0 votes)
43 views5 pages

SharePoint Extended Lookup Field Editor

Uploaded by

devi das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views5 pages

SharePoint Extended Lookup Field Editor

Uploaded by

devi das
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

26/11/2024 11:13 ExtendedLookupFieldEditor.

cs

using System;
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];
using [Link];

namespace [Link]
{
/// <summary>
/// Control used for creating and editing the <see
cref="T:[Link]"/> field's settings.
/// </summary>
public class ExtendedLookupFieldEditor : UserControl, IFieldEditor
{
#region Private Members

private const string TEXT_FIELD = "Value";


private const string VALUE_FIELD = "Key";

private string _errorMsg;


private ExtendedLookupFieldType _extendedLookupFieldType;

#endregion Private Members

#region Protected Members

protected Literal litSectionTitle;


protected Literal litSectionDescription;
protected Literal litWebForList;
protected Literal litLookupList;
protected Literal litDisplayColumn;
protected Label lblSelectedWebForList;
protected Label lblSelectedLookupList;
protected Label lblSelectedDisplayColumn;
protected DropDownList ddlWebForList;
protected DropDownList ddlLookupList;
protected DropDownList ddlDisplayColumn;
protected CheckBox chkAllowMultipleItems;
protected InputFormRequiredFieldValidator validator_ddlWebForList;
protected InputFormRequiredFieldValidator validator_ddlLookupList;
protected InputFormRequiredFieldValidator validator_ddlDisplayColumn;

#endregion Protected Members

#region Initialisation

protected override void OnInit(EventArgs e)


{
[Link](e);

ApplyResourceValues();
InitialiseControls();
}

#endregion Initialisation

#region IFieldEditor Members

public void InitializeWithField(SPField field)


{
_extendedLookupFieldType = field as ExtendedLookupFieldType;

if ([Link])
return;

[Link] cloud/[Link] 1/5


26/11/2024 11:13 [Link]
if (_extendedLookupFieldType != null)
{

// Only allow editing for new columns, unless the list\columns defined no longer
exist
if (_extendedLookupFieldType.WebSourceId != [Link])
{
using (SPWeb web =
[Link](_extendedLookupFieldType.WebSourceId))
{
[Link] = [Link];
[Link] = true;
[Link] = false;
validator_ddlWebForList.Enabled = false;

SPList lookupList = (from list in [Link]<SPList>()


where
[Link](_extendedLookupFieldType.LookupListId)
select list).SingleOrDefault();

if (lookupList != null)
{
SetAsReadOnly(lblSelectedLookupList, [Link], ddlLookupList,
validator_ddlLookupList);

if
([Link](_extendedLookupFieldType.DisplayColumnId))
{
SPField displayColumn =
[Link][_extendedLookupFieldType.DisplayColumnId];
SetAsReadOnly(lblSelectedDisplayColumn, [Link],
ddlDisplayColumn, validator_ddlDisplayColumn);
}
else
{
SetAsNotFoundError(lblSelectedDisplayColumn, "Previously
configured display field was not found, please update.", ddlDisplayColumn);
BindDisplayColumns(lookupList);
}
}
else
{
SetAsNotFoundError(lblSelectedLookupList, "Previously configured
lookup list was not found, please update.", ddlLookupList);
BindLookupList();
}
}
}
}
}

public void OnSaveChange(SPField field, bool bNewField)


{
ExtendedLookupFieldType extendedLookupFieldType = field as ExtendedLookupFieldType;

if (DropDownListHasSelectedItem(ddlWebForList))
[Link] = new Guid([Link]);
if (DropDownListHasSelectedItem(ddlLookupList))
[Link] = new Guid([Link]);
if (DropDownListHasSelectedItem(ddlDisplayColumn))
[Link] = new
Guid([Link]);

public bool DisplayAsNewSection


{
get
{

[Link] cloud/[Link] 2/5


26/11/2024 11:13 [Link]
return true;
}
}

#endregion IFieldEditor Members

#region Binding

private void BindWebForList()


{
Dictionary<Guid, string> webs =
[Link]([Link]);
BindList(ddlWebForList, webs);
}

private void BindLookupList()


{
Dictionary<Guid, string> lists =
[Link]([Link], [Link]);
BindList(ddlLookupList, lists);
}

private void BindDisplayColumns(SPList list)


{
const string DEFAULT_COLUMN = "Title";

Dictionary<Guid, string> fields = [Link](list,


[Link]);
BindList(ddlDisplayColumn, fields);

SetSelectedItemForDropDownList(ddlDisplayColumn, DEFAULT_COLUMN);
}

private void BindList(DropDownList dropDownList, Dictionary<Guid, string> dataSource)


{
[Link] = dataSource;
[Link] = TEXT_FIELD;
[Link] = VALUE_FIELD;
[Link]();
}

private void SetSelectedItemForDropDownList(DropDownList dropDownList, string


selectedItem)
{
if ([Link] == 0)
return;

ListItem listItem = [Link](selectedItem);


if (listItem != null)
{
[Link] = [Link](listItem);
}
else
{
[Link] = 0;
}
}

private void DropDownList_OnDataBound(object sender, EventArgs e)


{
((DropDownList)sender).[Link](0, new ListItem([Link], [Link]));
}

#endregion Binding

#region Private Methods

private void SetAsReadOnly(Label itemLabel, string itemText, DropDownList dropDownList,


InputFormRequiredFieldValidator validator)

[Link] cloud/[Link] 3/5


26/11/2024 11:13 [Link]
{
[Link] = itemText;
[Link] = true;
[Link] = false;
[Link] = false;
}

private void SetAsNotFoundError(Label itemLabel, string error, DropDownList dropDownList)


{
[Link] = error;
[Link] = "ms-error";
[Link] = true;
[Link] = true;
}

private bool DropDownListHasSelectedItem(DropDownList dropDownList)


{
return [Link] != null &&
![Link]([Link]);
}

private void ApplyResourceValues()


{
[Link] = "Lookup Column Settings";
[Link] = "Specify the lookup web, list, and display column.";
[Link] = "Source web to get information from:";
[Link] = "Get information from:";
[Link] = "In this column:";
[Link] = "Allow multiple values";
validator_ddlWebForList.ErrorMessage = "You must select a web as the source for the
lookup field.";
validator_ddlLookupList.ErrorMessage = "You must select a list as the source for the
lookup field.";
validator_ddlDisplayColumn.ErrorMessage = "You must select a disp;ay column from the
lookup list.";
}

private void InitialiseControls()


{
[Link] += DropDownList_OnDataBound;
[Link] += DropDownList_OnDataBound;

if (!IsPostBack)
{
BindWebForList();
[Link] = false;
[Link] = false;
}
}

private void EnableColumnDropDownLists()


{
[Link] = [Link] > 0;
if (![Link])
{
[Link]();
}
}

private void DisableColumnControl()


{
[Link] = false;
[Link]();
[Link] = false;
}

#endregion Private Methods

#region Rendering

[Link] cloud/[Link] 4/5


26/11/2024 11:13 [Link]

protected override void Render(HtmlTextWriter writer)


{
if (![Link](_errorMsg))
{
[Link]([Link]("<p class='ms-error'>{0}</p>", _errorMsg));
return;
}

[Link](writer);
}

#endregion Rendering

#region Events

protected void ddlWebForListOnSelectedIndexChanged(object sender, EventArgs eventArgs)


{
DropDownList dropDownList = sender as DropDownList;

if ([Link] != null && [Link]())


{
BindLookupList();

[Link] = false;
[Link] = true;
[Link] = true;
[Link] = false;
validator_ddlLookupList.Enabled = true;
}
else
{
[Link]();
[Link] = false;
DisableColumnControl();
}
}

protected void ddlLookupListOnSelectedIndexChanged(object sender, EventArgs eventArgs)


{
DropDownList dropDownList = sender as DropDownList;

if ([Link] != null && [Link]())


{
Guid webId = (DropDownListHasSelectedItem(ddlWebForList)) ? new
Guid([Link]) : _extendedLookupFieldType.WebSourceId;
Guid listId = new Guid([Link]);

using (SPWeb web = [Link](webId))


{
SPList list = [Link](listId, false);
BindDisplayColumns(list);
}

[Link] = false;
EnableColumnDropDownLists();
}
else
{
DisableColumnControl();
}
}

#endregion Events
}
}

[Link] cloud/[Link] 5/5

You might also like