2011-07-05 3 views
0

ОБНОВЛЕНИЕ: ЭТО РАБОЧАЯ ВЕРСИЯ.Как связать objectdatasource с Gridview

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> 

UPDATE: Проблема, что у меня сейчас с размером rows..that огромна И не обновление с содержанием в ,,, пример: Заголовок 33%, строка 33%, нижний колонтитул 33% .. хотя содержимое заголовка составляет 10% от gridview. Как я это исправить?

+0

Правильно ли это строка в вашем методе ObjectDataSource 'userDetailsRow [" Пользователь "] = item.Img;'? –

ответ

0

Вам нужно добавить столбец в вашем DataTable с именем Img перед использованием этого в Databinding

userDetailsRow["User"] = item.Img; 

должен быть

userDetailsRow["img"] = item.Img; 
+0

Но это не сработает, потому что он не добавил столбец '' img''. :) –

+0

lol..i наконец получил его, чтобы сработать .. но с одним полем высота строки таблицы огромна .. есть ли способ, чтобы высота сетки и высота строки были пропорциональны содержанию в ней? –

+0

Вы можете проверить свойства GridView Css. –

1

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

Update

Вы должны сделать это:

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; 

Fix где применяется.

+0

Спасибо Adrian..i решила проблему .. вот обновленный код –

Смежные вопросы