Хотите связать объект внутри объекта в виде сетки. Это возможно? - PullRequest
3 голосов
/ 06 февраля 2012

Моя структура класса

public class Listings
{
    public string id { get; set; }
    public string title { get; set; }

    public ListingsImages[] images;
}

public class ListingsImages
{ 
    public string src { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string alt { get; set; }
    public string num { get; set; }
    public string size { get; set; }
}

Я хочу связать свой вид сетки и я привязываюсь как

List<Listings> p = getData(); //returns list of Listings
gv.DataSource = p;
gv.DataBind();

Мой код вида сетки

<asp:GridView ID="gv" runat="server" AutoGenerateColumns=false>
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# Eval("id") %>
                        &nbsp&nbsp&nbsp&nbsp&nbsp
                        <%# Eval("title") %>
                        &nbsp&nbsp&nbsp&nbsp&nbsp
                        <%# Eval(?????)%>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

Один объект листингов содержит 10 изображений!Теперь проблема в том, что я хочу отобразить 6-й рис всех объектов List, тогда ??Я пытался

 <%# Eval("images[5].src")%>

Но это дает мне ошибку!Пожалуйста, ответьте мне, что должно быть решением?( Только с одним видом сетки и одним источником данных )

1 Ответ

1 голос
/ 06 февраля 2012

Да, вы можете сделать это, используя RowDataBound() событие сетки, чтобы сделать это ............

protected GridView_RowDataBound(object sender,
  GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
            //e.row.DataItem -- points to data / object which is going to be bind with the row 
     }
}
...