43 lines
1.7 KiB
C#
43 lines
1.7 KiB
C#
|
using System.Collections.Generic;
|
||
|
using System.Globalization;
|
||
|
using System.Web.DynamicData.Util;
|
||
|
using System.Web.Resources;
|
||
|
using System.Web.UI;
|
||
|
using System.Web.UI.WebControls;
|
||
|
|
||
|
namespace System.Web.DynamicData {
|
||
|
|
||
|
/// <summary>
|
||
|
/// DynamicQueryStringParameter allows a datasource to have its primary key easily fed from the query string.
|
||
|
/// It does not require any attributes, and works even for multi-part primary keys.
|
||
|
/// </summary>
|
||
|
public class DynamicQueryStringParameter : Parameter, IWhereParametersProvider {
|
||
|
/// <summary>
|
||
|
/// See IWhereParametersProvider.GetWhereParameters
|
||
|
/// </summary>
|
||
|
public virtual IEnumerable<Parameter> GetWhereParameters(IDynamicDataSource dataSource) {
|
||
|
var table = MetaTableHelper.GetTableWithFullFallback(dataSource, HttpContext.Current.ToWrapper());
|
||
|
|
||
|
// check makes no sense as the above call will throw
|
||
|
//if (table == null) {
|
||
|
// return new Parameter[0];
|
||
|
//}
|
||
|
|
||
|
return RouteParametersHelper.GetColumnParameters(table, Name);
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// same as base
|
||
|
/// </summary>
|
||
|
/// <param name="context"></param>
|
||
|
/// <param name="control"></param>
|
||
|
/// <returns></returns>
|
||
|
protected override object Evaluate(HttpContext context, Control control) {
|
||
|
// If this gets called, it means we never had a chance to expand the parameter. Give an error
|
||
|
// telling the user to use a DynamicDataManager
|
||
|
throw new InvalidOperationException(String.Format(
|
||
|
CultureInfo.CurrentCulture, DynamicDataResources.DynamicParameter_NeedExpansion, typeof(DynamicQueryStringParameter).Name));
|
||
|
}
|
||
|
}
|
||
|
}
|