我不知道是否可能。但我想知道是否有可能发生以下情况: 我有一个gridview链接到objectdatasource。此objectdatasource具有票证对象列表。此票证对象包含多个ID的属性。我们来看一下例如computerID。我有另一个列表,其中类Computer具有属性computerID和ComputerName。 我想要实现的是当gridview加载到computername而不是computerID时。
<asp:GridView ID="gvTickets" runat="server" AutoGenerateColumns="False"
DataKeyNames="ID" DataSourceID="odsTickets" AllowPaging="True">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" Visible="false" />
<asp:BoundField DataField="FullID" HeaderText="FullID" SortExpression="FullID"></asp:BoundField>
<asp:TemplateField HeaderText="ComputerID">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ComputerID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="StatusID" HeaderText="StatusID" ></asp:BoundField>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID"></asp:BoundField>
</Columns></SelectedRowStyle>
</asp:GridView>
odsTickets包含一个检索List
的select语句Class Ticket
{
private int computerID;
public int ComputerID
{
get { return computerID; }
set { computerID = value; }
}
}
我有一个缓存中的计算机列表列表,我想从中检索该数据。
Class Computer
{
private int computerID;
public int ComputerID
{
get { return computerID; }
set { computerID = value; }
}
private string computerName;
public string ComputerName
{
get { return computerID; }
set { computerID = value; }
}
}
答案 0 :(得分:1)
试试这个:
<asp:TemplateField HeaderText="ComputerName">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# this.ComputerListFromCache.First(x => x.ComputerId == Convert.ToInt32(Eval("ComputerID"))).ComputerName %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
使用linq通过Id从列表中获取Computer对象并获取ComputerName的值(它假定可以从具有网格视图且该列表不是'私有'的页面访问'ComputerListFromCache')。