【问题标题】:BulletedList in Reapeter中继器中的项目符号列表
【发布时间】:2013-08-10 05:02:12
【问题描述】:

我在数据库中有 2 个表已连接

tblPackage
id Name
1  Package A
2  Package B

tblDetails
id PackageID Details
1  1         PackageDetails11
2  1         PackageDetails12
3  1         PackageDetails13
4  1         PackageDetails14
5  2         PackageDetails21
6  2         PackageDetails22
7  2         PackageDetails23

现在我希望它在中继器上操作它

HTML

<asp:Repeater ID="rptrPackage" runat="server">
<ItemTemplate>
    <asp:Label id="Pack" runat="server" Text='<%# Bind("Pack") %>'></asp:Label>
    <asp:BulletedList id="Details" runat="server">
    </asp:BulletedList>
    </ItemTemplate>
</asp:Repeater>

ASP

private void Populate()
{
    DataTable dtPackage = tblPackage();
    DataTable dtDetails = tblDetails();

    rptrPackage.DataSource = dtPackage;
    rptrPackage.DataBind();
}

【问题讨论】:

  • 答案呢,你不知道要回应什么吗?答案对你来说不正确吗?

标签: c# asp.net asprepeater bulletedlist


【解决方案1】:

试试这个

aspx

    <asp:Repeater ID="rptrPackage" runat="server">
        <ItemTemplate>
            <asp:Label ID="Pack" runat="server" Text='<%# Bind("Pack") %>'></asp:Label>
            <asp:HiddenField ID="hID" Value='<%# Eval("PackageID") %>' runat="server" />
            <asp:Repeater runat="server" ID="rptDetails">
                <HeaderTemplate>
                    <ul>
                </HeaderTemplate>
                <ItemTemplate>
                    <li>
                        <%# Eval("Details")%>
                    </li>
                </ItemTemplate>
                <FooterTemplate>
                    </ul>
                </FooterTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>

后面的代码

    private void Populate()
    {
        DataTable dtPackage = tblPackage();
        DataTable dtDetails = tblDetails();

        rptrPackage.DataSource = dtPackage;
        rptrPackage.DataBind();

        foreach (RepeaterItem item in rptrPackage.Items)
        {
            Repeater rptDetails = ((Repeater)item.FindControl("rptDetails"));
            rptDetails.DataSource = dtDetails.Select("PackageID = " + ((HiddenField)item.FindControl("hID")).Value).CopyToDataTable();
            rptDetails.DataBind();
        }
    }

【讨论】:

    【解决方案2】:

    在中继器内使用SqlDataSourse

    <asp:Repeater ID="rptrPackage" runat="server" >
    <ItemTemplate>
    <asp:HiddenField ID="PackID" runat="server"  Value='<%# Eval("id") %>' 
    />
    <asp:Label id="Pack" runat="server" Text='<%# Eval("Name") %>'></asp:Label><br/>
    <asp:BulletedList ID="Details" runat="server"   
            DataSourceID="SqlDataSource1" DataTextField="Details"   
            DataValueField="id">
            </asp:BulletedList>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"    ConnectionString="<%$ ConnectionStrings:YourConnectionString %>" 
        SelectCommand="SELECT * FROM [tblDetail] WHERE [PackageID] = @PID"  >
        <SelectParameters>
            <asp:ControlParameter    Name="PID"   Type="Int32"  ControlID="PackID"   PropertyName="Value" />
         </SelectParameters>
     </asp:SqlDataSource>
     </ItemTemplate>
    </asp:Repeater>
    

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 2010-09-20
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2017-10-04
      • 1970-01-01
      相关资源
      最近更新 更多