C# 在asp.net中创建动态转发器

C# 在asp.net中创建动态转发器,c#,asp.net,asprepeater,C#,Asp.net,Asprepeater,您好,我正在建立一个在线体育用品商店, 我在主页的所有运动类型中都有此加载计划,如足球、板球、篮球等 管理员可以根据自己的意愿创建一个游戏 这里是困惑 如果单击(在转发器内),如何显示每个游戏的子类别。 我想给它添加一个ImageButton!!但是,如何将该图像按钮链接到游戏,即当用户单击相应的图像按钮->时,应显示该游戏的子类别 例如: 1.如果我有板球、足球等运动 2.中继器应显示中继器中的所有游戏 3.当用户单击例如Cricket时 4.我希望加载板球商品的所有子类别,如球棒、球、树桩等

您好,我正在建立一个在线体育用品商店,
我在主页的所有运动类型中都有此加载计划,如足球、板球、篮球等
管理员可以根据自己的意愿创建一个游戏

这里是困惑
如果单击(在转发器内),如何显示每个游戏的子类别。
我想给它添加一个
ImageButton
!!但是,如何将该图像按钮链接到游戏,即当用户单击相应的图像按钮->时,应显示该游戏的子类别

例如:
1.如果我有板球、足球等运动
2.中继器应显示中继器中的所有游戏
3.当用户单击例如Cricket时
4.我希望加载板球商品的所有子类别,如球棒、球、树桩等

我尝试在
Repeater
中加载游戏,如下面的代码片段所示:

       <asp:Repeater ID="RepDetails" runat="server" 
        ondatabinding="RepDetails_DataBinding">
        <HeaderTemplate>
            <table style="border: 1px solid #df5015; width: 500px" cellpadding="0">
                <tr style="background-color: #df5015; color: White">
                    <td colspan="2">
                        <b>Type of Sports</b>
                    </td>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr style="background-color: #EBEFF0">
                <td>
                    <table style="background-color: #EBEFF0; border-top: 1px dotted #df5015; width: 500px">
                        <tr>
                            <td>
                                <asp:Label ID="Label1" runat="server" Text='<%#Eval("Id") %>' />
                            </td>
                            <td>
                                <asp:Label ID="lblSubject" runat="server" Text='<%#Eval("Category") %>' Font-Bold="true" />
                            </td>
                            <td>
                                <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton2_Click" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

运动类型
我甚至添加了
ImageButton
,但对于让它加载游戏的各个子类别感到困惑


如果有其他更有效的解决方法,欢迎您提出建议。

您可以尝试嵌套中继器

在aspx中

<asp:Repeater ID="RepDetails" runat="server" OnDataBinding="RepDetails_DataBinding">
    <HeaderTemplate>
        <table style="border: 1px solid #df5015; width: 500px" cellpadding="0">
            <tr style="background-color: #df5015; color: White">
                <td colspan="2">
                    <b>Type of Sports</b>
                </td>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr style="background-color: #EBEFF0">
            <td>
                <table style="background-color: #EBEFF0; border-top: 1px dotted #df5015; width: 500px">
                    <tr>
                        <td>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("Id") %>' />
                        </td>
                        <td>
                            <asp:Label ID="lblSubject" runat="server" Text='<%#Eval("Category") %>' Font-Bold="true" />
                        </td>
                        <td>
                            <asp:ImageButton ID="ImageButton1" runat="server" OnClick="ImageButton2_Click" />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
        <asp:Repeater ID="SportsProps" runat="server">
            <ItemTemplate>
                <tr style="background-color: #EBEFF0">
                    <td>
                        <table style="background-color: #EBEFF0; border-top: 1px dotted #df5015; width: 500px">
                            <tr>
                                <td>
                                    <asp:Label ID="lblSubject" runat="server" Text='<%#Eval("Name") %>' Font-Bold="true" />
                                </td>
                                <td>
                                    <asp:ImageButton ID="ImageButton3" runat="server" OnClick="ImageButton3_Click" />
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>

-1:使用坏掉的键盘。请检查你的班次/大写字母-它似乎被随机卡住,因为你的帖子中有大量大写字母文本。你们可以试着缩小样本,使问题变得更好。我是故意这样做的,目的是引起大家的注意!要在imagebutton上链接,要显示子类别,可以使用ajax方法动态加载子类别,也可以使用
TreeView
控件。。你们所问的是一个非常宽泛的问题,其实有很多方法。谢谢你们的回答!!你能让我描述一下我如何知道用户现在至少点击了哪个imagebutton,这样我就可以开始工作了,我还会查看treeView。。。thanks@user2866238您需要了解标记格式,以正确的格式突出显示文本。。;对我来说,在整句话中使用大写并不会突出重点,反而会分散读者的注意力,显示出问题的低质量
   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            RepDetails.DataSource = GetData();
            RepDetails.DataBind();
        }
    }

    protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        Repeater repeater = ((ImageButton)sender).NamingContainer.FindControl("SportsProps") as Repeater;
        Label catLabel = ((ImageButton)sender).NamingContainer.FindControl("lblSubject") as Label;
        repeater.DataSource = GetDataDetail(catLabel.Text);
        repeater.DataBind();
    }

    protected void ImageButton3_Click(object sender, ImageClickEventArgs e)
    {
        //do something to hide the 
    }

    private DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("id", typeof(string));
        dt.Columns.Add("category", typeof(string));
        dt.Rows.Add("1 ", "Basketball");
        dt.Rows.Add("2 ", "Football");
        dt.Rows.Add("3 ", "Soccer");
        return dt;
    }

    private DataTable GetDataDetail(string category)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("name", typeof(string));
        dt.Rows.Add("Bat");
        dt.Rows.Add("Ball");
        dt.Rows.Add("Stump");
        return dt;
    }