Привязка данных к параметру запроса DomainDataSource
Мне нужно привязать имя пользователя к DomainDataSource QueryParameter. Насколько я понимаю, следующее не работает:
<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});
}
Но это было просто глупо.
Я в недоумении. Как мне загрузить этот запрос с параметром при загрузке страницы?
Спасибо!
2 ответа
Хм, я не могу дать конкретного ответа на вашу проблему, но, возможно, знаю способ полностью избежать этой ситуации.
Я заметил, что у вас есть метод с именем "GetStockByCompany", который принимает входящего в систему пользователя в качестве параметра...
Вы можете полностью устранить необходимость в параметре и вместо этого на своем серверном запросе для "GetStockByCompany" использовать это в своей части "Где":
this.ServiceContext.User.Identity.Name
Ex - Получение всех альбомов для текущего пользователя:
album = this.Context.AlbumSet
.Where(n => n.AlbumId == AlbumId)
.Where(n => n.aspnet_Users.UserName == this.ServiceContext.User.Identity.Name)
.First();
Привязка параметра запроса работает, типичное использование - привязка его непосредственно к элементам управления.
Чтобы установить параметр в коде, присвойте параметру имя и установите свойство value. Там нет необходимости добавлять весь параметр в коде позади.