解決的LINQ的DataRow參考。代碼已被編輯以反映解決方案。傳遞在GridView的ItemTemplate
鑑於以下GridView
:
<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="false" DataKeyNames="UniqueID"
OnSelectedIndexChanging="GridView1_SelectedIndexChanging" >
<Columns>
<asp:BoundField HeaderText="Remarks" DataField="Remarks" />
<asp:TemplateField HeaderText="Listing">
<ItemTemplate>
<%# ShowListingTitle(Container.DataItem) %>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Amount" DataField="Amount" DataFormatString="{0:C}" />
</Columns>
</asp:GridView>
它指的是下面的代碼隱藏方法:
protected String ShowListingTitle(object /* was DataRow */ row)
{
Listing listing = (Listing) row;
return NicelyFormattedString(listing.field1, listing.field2, ...);
}
從DataRow
到Listing
劇組失敗(不能轉換從DataRow
到Listing
)我'肯定問題在於我在ItemTemplate中傳遞的內容,這並不是從LINQ到SQL數據集中的當前記錄的正確引用, eated,它看起來像這樣:
private void PopulateGrid()
{
using (MyDataContext context = new MyDataContext())
{
IQueryable <Listing> listings = from l in context.Listings where l.AccountID == myAccountID select l;
GridView1.DataSource = listings;
GridView1.DataBind();
}
}
這一切都花了!謝謝!我對使用LINQ與其他類型的DataSets如此簡單的方式印象深刻。 – 2010-03-25 12:22:27
@Bob Kaufman:當然很簡單:)你只需要知道如何。 – leppie 2010-03-25 12:27:20