GridView </string>中List <string>的ListView表示

时间:2013-10-22 09:55:58

标签: c# asp.net listview gridview

我在asp.net Web应用程序的模板字段中有一个listview。

我需要它来显示集合的内容,每行1个。

我该怎么做?

Current Design:

我希望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>

编辑:

列表截图: enter image description here

EDIT2:

草绘我想要完成的事情。 enter image description here enter image description here

请原谅粗略的图纸。 我试图让名为finalSelection的列表(在Sketch#1,8项中)看起来像Sketch#2中的Gridview。使用单元格跨越可能会更容易,但似乎作弊。 所以我用一个绑定列'Crop'和另一列(templatecolumn)创建了一个gridview 然后我把listview控件放到像桌子一样的布局(我喜欢) 问题是当我将listview.datasource分配给finalSelection时,列表将不会像我希望的那样显示(这似乎是合乎逻辑的) 我能做些什么来完成我的目标? :)

1 个答案:

答案 0 :(得分:1)

<%# Eval("BG")%>替换为<%# Container.DataItem %>

编辑:从OP拍摄屏幕后

似乎你的DataSource是错误的。您指的是包含该列表的类。

试试这个:

lv.DataSource = finalSelection.BG;