Связывание вида сетки - PullRequest
0 голосов
/ 27 мая 2009

Я связываю источник данных объекта с видом сетки. Мой объект имеет коллекцию элементов в одном из свойств. Это список. Как мне пройти через это и привязать элементы к столбцу в GridView?.

Ответы [ 3 ]

1 голос
/ 27 мая 2009

Получить коллекцию из объекта и связать ее с помощью

myGridView.DataSource = myCollection; 
myGridView.DataBind();
0 голосов
/ 28 мая 2009

Не могли бы вы иметь Repeater внутри шаблона Col. и просто привязать свой список к нему в RowDataBound?

0 голосов
/ 27 мая 2009

Изменить: обновлен для вызова метода в коде позади, чтобы генерировать HTML-разметку для коллекции.

В вашей разметке aspx у вас может быть что-то вроде следующего:

    <asp:GridView ID="myGridView" AutoGenerateColumns="False" runat="server">
        <Columns>
            <asp:BoundField HeaderText="Item Name" DataField="Name" />
            <asp:TemplateField HeaderText="Collection Field">
                <ItemTemplate>
                    <%# ((_Default)Page).GetHtmlForList(DataBinder.Eval(Container.DataItem, "List"))%>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

тогда в вашем коде может быть что-то вроде этого:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            myGridView.DataSource = GetCollection();
            myGridView.DataBind();
        }
    }

    public string GetHtmlForList(object value)
    {
        string html = "";
        List<string> list = (List<string>)value;
        foreach (string item in list)
            html += item + "<br/>";
        return html;
    }

    private List<MyClass> GetCollection()
    {
        List<MyClass> coll = new List<MyClass>();
        coll.Add(new MyClass { Name = "First Item", List = new List<string>(new string[] { "1", "2", "3" }) });
        coll.Add(new MyClass { Name = "Second Item", List = new List<string>(new string[] { "Apples", "Pears", "Oranges" }) });
        coll.Add(new MyClass { Name = "Third Item", List = new List<string>(new string[] { "Red", "Green", "Blue" }) });

        return coll;
    }
}

public class MyClass
{
    public string Name { get; set; }
    public List<string> List { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...