|
using System;
using System.Collections;
using System.Linq;
using System.Web.DynamicData;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace BasicDataViewer.DynamicData.Filters
{
public partial class ForeignKeyFilter : System.Web.DynamicData.QueryableFilterUserControl
{
private const string NullValueString = "[null]";
private new MetaForeignKeyColumn Column
{
get
{
return (MetaForeignKeyColumn)base.Column;
}
}
public override Control FilterControl
{
get
{
return DropDownList1;
}
}
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (!Column.IsRequired)
{
DropDownList1.Items.Add(new ListItem("[Not Set]", NullValueString));
}
PopulateListControl(DropDownList1);
// Set the initial value if there is one
string initialValue = DefaultValue;
if (!String.IsNullOrEmpty(initialValue))
{
DropDownList1.SelectedValue = initialValue;
}
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OnFilterChanged();
}
public override IQueryable GetQueryable(IQueryable source)
{
string selectedValue = DropDownList1.SelectedValue;
if (String.IsNullOrEmpty(selectedValue))
{
return source;
}
if (selectedValue == NullValueString)
{
return ApplyEqualityFilter(source, Column.Name, null);
}
IDictionary dict = new Hashtable();
Column.ExtractForeignKey(dict, selectedValue);
foreach (DictionaryEntry entry in dict)
{
string key = (string)entry.Key;
if (DefaultValues != null)
{
DefaultValues[key] = entry.Value;
}
source = ApplyEqualityFilter(source, Column.GetFilterExpression(key), entry.Value);
}
return source;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.