Как привязать список <Int>к сетке? - PullRequest
7 голосов
/ 05 февраля 2009

Это может быть довольно странный вопрос, поскольку обычно люди связывают только сложные типы с видом сетки. Но мне нужно связать список Int (то же самое для строк). Обычно в качестве свойства привязки используется имя свойства объекта, но при использовании Int или String значением является именно сам объект, а не свойство.

Что такое «имя», чтобы получить значение объекта? Я пробовал "Значение", "" (пусто), "это", "элемент", но не повезло.

Я имею в виду сетку в веб-форме.

Обновление

Есть связанный вопрос переполнения стека, Как связать список с GridView .

Ответы [ 5 ]

9 голосов
/ 05 февраля 2009

<BoundField DataField="!" /> может сделать трюк (поскольку BoundField.ThisExpression равно "!").

4 голосов
/ 05 февраля 2009
<asp:TemplateField>
   <ItemTemplate>
       <%# Container.DataItem.ToString() %>
   </ItemTemplate>
</asp:TemplateField>
3 голосов
/ 05 февраля 2009

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

public class Wrapper<T> {
    public T Value {get;set;}
    public Wrapper() {}
    public Wrapper(T value) {Value = value;}
}

Затем вместо этого свяжите с List<Wrapper<T>> (как Value) - например, используя что-то вроде (C # 3.0):

var wrapped = ints.ConvertAll(
            i => new Wrapper<int>(i));

или C # 2.0:

List<Wrapper<int>> wrapped = ints.ConvertAll<Wrapper<int>>(
    delegate(int i) { return new Wrapper<int>(i); } );
2 голосов
/ 05 февраля 2009

Это в основном та же идея, что и у Марка, но проще.

Создает анонимный класс-обертку, который можно использовать в качестве источника данных сетки, а затем привязывает столбец к члену «Значение»:

List<int> list = new List<int> { 1,2,3,4};
var wrapped = (from i in list select new { Value = i }).ToArray();
grid.DataSource = wrapped;
0 голосов
/ 05 февраля 2009

Если вам нужно написать имя свойства для визуализации, вы должны инкапсулировать целочисленное (или строковое) значение в классе со свойством, которое возвращает значение. В сетке нужно только написать <%# Eval("PropertyName") %>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...