решено. Код отредактирован для отражения решения.
Учитывая следующее 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 to 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();
}
}