Возможно, вы уже нашли решение, однако я хотел бы поделиться с вами своим опытом.
Оказалось, что это отличная пита, но мне удалось получить строку редактирования. Мне пришлось извлечь DetailsDataSource WhereParameters, а затем создать запрос во время выполнения.
Приведенный ниже код работает для таблиц с одним первичным ключом. Если у вас есть составные ключи, я думаю, это потребует изменений:
Parameter param = null;
foreach(object item in (DetailsDataSource.WhereParameters[0] as DynamicQueryStringParameter).GetWhereParameters(DetailsDataSource)) {
param = (Parameter)item;
break;
}
IQueryable query = DetailsDataSource.GetTable().GetQuery();
ParameterExpression lambdaArgument = Expression.Parameter(query.ElementType, "");
object paramValue = Convert.ChangeType(param.DefaultValue, param.Type);
Expression compareExpr = Expression.Equal(
Expression.Property(lambdaArgument, param.Name),
Expression.Constant(paramValue)
);
Expression lambda = Expression.Lambda(compareExpr, lambdaArgument);
Expression filteredQuery = Expression.Call(typeof(Queryable), "Where", new Type[] { query.ElementType }, query.Expression, lambda);
var WANTED = query.Provider.CreateQuery(filteredQuery).Cast<object>().FirstOrDefault<object>();