Как связать объектный источник данных с Gridview - PullRequest
0 голосов
/ 05 июля 2011

ОБНОВЛЕНИЕ: ЭТО РАБОЧАЯ ВЕРСИЯ.

public DataSet GetObjects()
{
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    var source = from p in CommentsList
                 select new { p.Img, p.Name, p.Comment };
    dt.Columns.Add("Img");
    dt.Columns.Add("Name");
    dt.Columns.Add("Comment");

    foreach (var item in source)
    {
        DataRow userDetailsRow=dt.NewRow();
        userDetailsRow["Img"] = item.Img;
        userDetailsRow["Name"] = item.Name;

        DataRow comments = dt.NewRow();
        userDetailsRow["Comment"] = item.Comment;
        dt.Rows.Add(userDetailsRow);
        //dt.Rows.Add(comments);
    }
    ds.Tables.Add(dt);
    return ds;
}

Мой раздел столбцов GridView выглядит следующим образом:

 <Columns>
  <asp:TemplateField HeaderText="#">
                    <HeaderStyle Width="500px" />
                     <ItemStyle Width="500px" Height="100px" />
                    <ItemTemplate>
                        <asp:Label ID="lblMessage" runat="server"  Text='<%# Bind("Comment") %>'></asp:Label>
                    </ItemTemplate>
   </asp:TemplateField>

       <asp:TemplateField HeaderText="#">
                    <HeaderStyle Width="100px" />
                      <ItemStyle Width="100px" Height="100px" />
                    <ItemTemplate>
                        <asp:Image ID="imgName" runat="server"  imageUrl='<%# Bind("Img") %>'></asp:Image><br />
                        <asp:Hyperlink ID="hyperLink" runat="server"  Text='<%# Bind("Name") %>' ></asp:Hyperlink>
                    </ItemTemplate>
   </asp:TemplateField>

ОБНОВЛЕНИЕ: проблема, с которой я столкнулся сейчас, связана с размером строк .. они огромные и не обновляются с содержанием внутри ,,, пример: верхний колонтитул 33%, ряд 33%, нижний колонтитул 33% ... хотя содержание заголовок составляет 10% от сетки. Как это исправить?

Ответы [ 2 ]

1 голос
/ 05 июля 2011

У вас нет Img свойства.Легко и просто.Вот почему у вас есть проблемы с доступом к нему: он не существует. Вам нужно создать свойство И и заполнить его.

Обновить

Вам следуетсделайте это:

var source = from p in CommentsList
             select new { p.Img, p.Name, p.Comment };
dt.Columns.Add("User");
dt.Columns.Add("Comment");
dt.Columns.Add("Img");

, а затем это:

DataRow userDetailsRow=dt.NewRow();
    userDetailsRow["Img"] = item.Img;
    userDetailsRow["User"] = item.Name;

Исправьте, где это применимо.

0 голосов
/ 05 июля 2011

Вам необходимо добавить столбец в таблицу данных с именем Img, прежде чем использовать его в привязке данных

userDetailsRow["User"] = item.Img;

должно быть

userDetailsRow["img"] = item.Img;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...