해결되었습니다. 코드가 솔루션을 반영하도록 편집되었습니다.GridView의 ItemTemplate에서 LINQ DataRow 참조 전달
주어진 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, ...);
}
Listing
-
DataRow
에서 캐스팅 (
DataRow
에서
Listing
로 변환 할 수 없습니다) 실패했다
I '문제는 ItemTemplate 내에서 전달하는 것입니다. LINQ에서 SQL 데이터 세트로의 현재 레코드에 대한 올바른 참조가 아닙니다. 다음과 같습니다 어갈 :
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를 사용하는 것이 얼마나 간단한 지 감동했습니다. –
@Bob Kaufman : 물론 간단합니다 :) 당신은 단지 어떻게 알아야합니다. – leppie