Привязка данных к параметру запроса DomainDataSource

Мне нужно привязать имя пользователя к параметру запроса DomainDataSource. Насколько я понимаю, следующее не работает:

<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True">

    <RiaControls:DomainDataSource.DomainContext>
        <ds:InventoryDomainContext  />
    </RiaControls:DomainDataSource.DomainContext>

    <RiaControls:DomainDataSource.QueryParameters>
        <riadata:Parameter 
            ParameterName="userName" 
            Value="{Binding Path=User.Name}" />
    </RiaControls:DomainDataSource.QueryParameters>

</RiaControls:DomainDataSource>

Я не против использования части кода C# на странице, но я не уверен, в какое событие это поместить.

До сих пор я пробовал это:

public Inventory()
{
    InitializeComponent();
    Loaded += Inventory_Loaded;
}
private void Inventory_Loaded(object sender, RoutedEventArgs e)
{
   this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}

Но поскольку InitializeComponent() срабатывает первым и загружает данные, что приводит к тому, что DomainDataSource взрывается из-за того, что у Query нет никаких параметров для запуска... это не сработало.

Далее я попробовал это...

[xaml-файл]

<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadingData="MyData_LoadingData">

[CS-файл]

private void MyData_LoadingData(object sender, LoadingDataEventArgs e)
{
   this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}

К сожалению, событие так и не запустилось. Я не уверен, почему.

Я даже пробовал это: [файл xaml]

<RiaControls:DomainDataSource x:Name="MyData" LoadSize="20" QueryName="GetStockByCompany" AutoLoad="True" LoadedData="MyData_LoadedData">

[CS-файл]

private void MyData_LoadedData(object sender, LoadedDataEventArgs e)
{
   this.MyData.QueryParameters.Add(new Parameter { ParameterName = "userID", Value = RiaContext.Current.User.Name});
}

Но это было просто глупо.

Я в растерянности. Как загрузить этот запрос с параметром при загрузке страницы?

Спасибо!


person Joe    schedule 10.11.2009    source источник


Ответы (2)


Хм, я не конкретный ответ на вашу проблему, но я могу знать способ полностью избежать этой ситуации.

Я заметил, что у вас есть метод с именем "GetStockByCompany", который принимает текущего пользователя в качестве параметра...

Вы можете полностью исключить необходимость в параметре и вместо этого в запросе на стороне сервера для «GetStockByCompany» использовать его в своей части «Где»:

this.ServiceContext.User.Identity.Name

Пример. Получение всех альбомов для текущего пользователя, вошедшего в систему:

album = this.Context.AlbumSet
            .Where(n => n.AlbumId == AlbumId)
            .Where(n => n.aspnet_Users.UserName == this.ServiceContext.User.Identity.Name)
            .First();
person vidalsasoon    schedule 10.11.2009

Привязка параметра запроса работает, типичное использование заключается в том, что вы привязываете его непосредственно к элементам управления.

Чтобы установить параметр в коде позади, дайте параметру имя и установите свойство value. Нет необходимости добавлять весь параметр в код позади.

person John    schedule 23.01.2013