2011-07-05 38 views
0

更新:這是工作版本。如何使用Gridview綁定objectdatasource

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> 

更新:我已經搞到現在是rows..that的規模是巨大的,內與內容不更新的問題,,,例如:標題33%,行33%,頁腳33%..即使頭部的內容是gridview的10%..如何修復?

+0

在你的ObjectDataSource方法中這行是否正確'userDetailsRow [「User」] = item.Img;'? –

回答

0

你需要在你的DataTable與Img名稱使用此之前綁定

userDetailsRow["User"] = item.Img; 

增加一列應該是

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

但是,那麼它會失敗,因爲他沒有添加''img「'列。 :) –

+0

大聲笑..我終於得到它的工作..但有一個領域的錶行高度是巨大的..有一種方法的網格高度和行高度是相稱的內容呢? –

+0

您可以使用GridView Css屬性進行檢查。 –

1

你沒有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

謝謝阿德里安..我解決了這個問題..見代碼更新以上 –

相關問題