解决的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