我在asp.net Web应用程序的模板字段中有一个listview。
我需要它来显示集合的内容,每行1个。
我该怎么做?
我希望ListView的表有多行。列表中的每个项目都是1。 例如:
Breeding Group | Breeding Group Role | Default
AAA 1111 F
BBB 2222 T
CCC 3333 F
这就是每个'Crop'
这可能吗?
当前代码:
类别:
[Serializable()]
public class UserCrops
{
public UserCrops(string _Crop, List<string> _BG, List<string> _BGR, List<bool> _Default)
{
Crop = _Crop;
BG = _BG;
BGR = _BGR;
Default = _Default;
}
public string Crop { get; set; }
public List<string> BG { get; set; }
public List<string> BGR { get; set; }
public List<bool> Default { get; set; }
}
结合:
protected void GVUserCrops_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ListView lv = (ListView)e.Row.FindControl("lvBGs");
lv.DataSource = finalSelection;
lv.DataBind();
}
}
GridView的:
<asp:GridView ID="GVUserCrops" runat="server" AutoGenerateColumns="False" CellPadding="4"
ForeColor="#333333" GridLines="None" OnRowDataBound="GVUserCrops_RowDataBound"
Width="634px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="Crop" HeaderText="Crop" />
<asp:TemplateField HeaderText="BG/BGR">
<ItemTemplate>
<asp:ListView ID="lvBGs" runat="server">
<LayoutTemplate>
<table style="border: solid 2px #336699;" cellspacing="0" cellpadding="3" rules="all">
<tr style="background-color: #336699; color: White;">
<th>
Breeding Group
</th>
<th>
Breeding Group Role
</th>
<th>
Default
</th>
</tr>
<tbody>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("BG")%>
</td>
<td>
<%# Eval("BGR")%>
</td>
<td>
<%# Eval("Default")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color: #dadada;">
<td>
<%# Eval("BG")%>
</td>
<td>
<%# Eval("BGR")%>
</td>
<td>
<%# Eval("Default")%>
</td>
</tr>
</AlternatingItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
编辑:
列表截图:
EDIT2:
草绘我想要完成的事情。
请原谅粗略的图纸。 我试图让名为finalSelection的列表(在Sketch#1,8项中)看起来像Sketch#2中的Gridview。使用单元格跨越可能会更容易,但似乎作弊。 所以我用一个绑定列'Crop'和另一列(templatecolumn)创建了一个gridview 然后我把listview控件放到像桌子一样的布局(我喜欢) 问题是当我将listview.datasource分配给finalSelection时,列表将不会像我希望的那样显示(这似乎是合乎逻辑的) 我能做些什么来完成我的目标? :)
答案 0 :(得分:1)
将<%# Eval("BG")%>
替换为<%# Container.DataItem %>
编辑:从OP拍摄屏幕后
似乎你的DataSource是错误的。您指的是包含该列表的类。
试试这个:
lv.DataSource = finalSelection.BG;