Как программно установить параметры для EntityDataSource и DetailsView? - PullRequest
3 голосов
/ 28 июня 2009

Я в тупике!

Каков наилучший способ программной установки параметра выбора для элемента управления EntityDataSource?

В частности, я хочу использовать Page.User.ProviderUserKey для получения записи в пользовательской таблице сведений о пользователе, которую я имею, для DetailsView.

Я видел код, использующий asp:ControlParameter для извлечения значения из элемента управления, но это почти похоже на хак для моей ситуации. Я не хочу, чтобы дополнительный элемент управления просто устанавливал значение параметра.

Есть идеи? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 28 июня 2009

Если создание пользовательского типа параметра кажется слишком большой работой, вы можете программно добавить базовый параметр следующим образом:

Parameter parameter = new Parameter("MyParam", TypeCode.String,
    Page.User.ProviderUserKey);
MyDataSource.SelectParameters.Add(parameter);

Что-то вроде этого должно дать вам то, что вам нужно.

1 голос
/ 28 июня 2009

Вы можете создать свой собственный параметр:

<my:CustomParameter Name="MyParam" />

Подробную информацию о том, как реализовать пользовательский параметр, можно найти в Блог Фредрика Нормена . Использовать пользовательский параметр так же просто, как использовать любой из встроенных типов параметров, но быстрый пример можно найти в Блоге ScottGu .

Самая простая реализация будет выглядеть примерно так:

public class CustomParameter : Parameter
{
    protected override object Evaluate(HttpContext context, Control control)
    {
        // This is where you would grab and return
        // the Page.User.ProviderUserKey value
        return string.Empty;
    }
}
...