2012-04-30 5 views
2

Приветствие, Я использую сетку, которая получает ее источник из выражения linq.Изменить сетку asp.net через linq datasource

Вот LINQ, например:

var data = from row in tempCity.AsEnumerable() 
      group row by row.Field<string>("City") into city 
      select new 
      { 
       City = city.Key, 
       Count = city.Count() 
      }; 

После назначения «данных» для источника данных сетки, я получить нужный мне результат. Проблема возникла, когда я попытался сделать приложение многоязычным, и я не могу найти способ перевести заголовок City и Count моей Grid на другой язык.

Я попытался выполнить следующие действия: 1.На основании города напишите GetLocalResource («Город») внутри выражения linq вместо термина «Город», это не сработало.

2.Измените свойства сетки Программно, однако, поскольку выражение linq отличается для каждого действия, зависит от желаемых клиентов, у меня нет готовых столбцов на моей странице aspx, поэтому я не могу добраться до grid.Column property - всегда обозначается как 0.

3.Вставьте все данные linq внутри DataTable, я знаю, что это должно работать, но это не так, кажется, это неудобно, и я как более чистое решение.

Заранее спасибо.

ответ

0

Я полагаю, что решение 1 будет вашим любимым. Но ваш запрос LINQ переводится в SQL-запрос, и, конечно же, нет метода SQL, такого как GetLocalResource.

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

<asp:Literal Text='<%# GetLocalResource(Eval("City"))' runat="server" /> 
+0

Спасибо за ваш ответ, но я не думаю, что это будет соответствовать моему делу сейчас, когда есть два поля на Linq, и у меня есть случай, переключатель с сценариями, где у меня есть 6 и 9 заголовков. –

+0

Вы имеете в виду, что у вас разное количество городов в зависимости от локализации? Вы можете уточнить свой вопрос? Возможно, мы сможем найти лучшее решение. Я просто попытался улучшить ваше первое решение. BTW: Похоже, вы запрашиваете ADO.NET DataTable. Что такое ваш DataSource? – slfan

+0

Действительно, я беру некоторый результат из DataTable, поэтому я не думаю, что asp: literal \ label \ localization будет работать из-за того, что в зависимости от запросов моих клиентов я получаю различное количество столбцов для каждого сценарий, IE: Запрос 1: «from .. where .. select new {2 fields}», Query 2: «from..where..select new {5 fields}» .. –