我需要在网格单元格中显示子实体类中的N项列表。
我有一个复杂的实体(来自EF6),例如
public partial class DEALER
{
public DEALER()
{
this.DEALER_MODEL = new HashSet<DEALER_MODEL>();
}
public int DEALER_KY { get; set; }
public string DEALER_NAME { get; set; }
public virtual ICollection<DEALER_MODEL> DEALER_MODEL { get; set; }
}
public partial class DEALER_MODEL
{
public int DEALER_MODEL_KY { get; set; }
public string MODEL_NAME { get; set; }
}我有一个GridView,我想以逗号字符串的形式显示模型列表。
<asp:GridView ID="DealerGrid" runat="server" CssClass="tx-form"
EnableViewState="false" AutoGenerateColumns="false" AllowPaging="true"
PageSize="25" AllowSorting="true" GridLines="None" CellPadding="2"
CellSpacing="0" OnSorting="DealerGrid_Sorting"
OnPageIndexChanging="DealerGrid_PageIndexChanging">
<HeaderStyle BackColor="#F4F1CD" ForeColor="#003359" Wrap="true" />
<RowStyle BackColor="#FBF9EB" />
<AlternatingRowStyle BackColor="#E4DEB0" />
<PagerStyle HorizontalAlign="Right" />
<Columns>
<asp:BoundField DataField="DEALER_KY" Visible="false" />
<asp:HyperLinkField DataTextField="DEALER_NAME"
SortExpression="DEALER_NAME"
DataNavigateUrlFields="DEALER_KY"
DataNavigateUrlFormatString="~\dealer.aspx?dealerkey={0}"
HeaderText="Dealer Name" HeaderStyle-HorizontalAlign="Left"
HeaderStyle-VerticalAlign="Top"
ItemStyle-Width="10%" ItemStyle-Wrap="false"/>
<asp:BoundField DataField="DEALER_MODEL" HeaderText="Model"
HeaderStyle-HorizontalAlign="Left"
HeaderStyle-VerticalAlign="Top"/>
</Columns>
我想展示这样的东西:
Joes,LaCross世纪
-or -Joes Auto Acura
商品、商品、商品等
成本-商品-商品
我尝试过一个模板字段/eval,但是它无法工作。
我是asp.net和网格公司的新手,所以温柔点。;)
我不能修改我的类,因为它是由EF自动生成的.
Thx
发布于 2015-10-26 14:06:55
其实挺容易的。我创建了一个部分类(因此重载了原始类)并添加了属性。
public partial class DEALER
{
public string ModelList {
get
{
if (MODEL_NAME != null)
{
return string.Join(",", DEALER_MODEL.Select(i => i.MODEL_NAME.ToString()).ToArray());
}
return "";
}
}
}发布于 2015-10-24 02:03:55
您可以使用这样的string.Join方法获得逗号分隔字符串:
DealerGrid.DataSource =
(from d in db.Dealers
select new
{
DEALER_KY = d.DEALER_KY,
DEALER_NAME = d.DEALER_NAME,
DEALER_MODEL = string.Join(", ", d.DEALER_MODEL.Select(m => m.MODEL_NAME).ToArray())
});
DealerGrid.DataBind();https://stackoverflow.com/questions/33312769
复制相似问题