Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 从数据库数据创建的动态控件_Asp.net_Database_Postback_Viewstate - Fatal编程技术网

Asp.net 从数据库数据创建的动态控件

Asp.net 从数据库数据创建的动态控件,asp.net,database,postback,viewstate,Asp.net,Database,Postback,Viewstate,我已经工作了几天,试图找出如何做到这一点。在C#工作时,我有一个从各种数据库表中提取的数据列表。我想从这些数据中创建不同的DropDownList,这些数据将在回发中持久存在。我能够修补的一种方法是将数据解析到List>中,并将两个中继器相互嵌套 <asp:Repeater ID="rpt3" runat="server"> <ItemTemplate> <select> <asp:Repe

我已经工作了几天,试图找出如何做到这一点。在C#工作时,我有一个从各种数据库表中提取的数据列表。我想从这些数据中创建不同的DropDownList,这些数据将在回发中持久存在。我能够修补的一种方法是将数据解析到List>中,并将两个中继器相互嵌套

<asp:Repeater ID="rpt3" runat="server">
        <ItemTemplate>
            <select>
            <asp:Repeater DataSource="<%#Container.DataItem%>" runat="server">
                <ItemTemplate>
                    <option><%#Container.DataItem%></option>
                </ItemTemplate>
            </asp:Repeater>
            </select>
        </ItemTemplate>
    </asp:Repeater>

问题在于,SelectedValues不会保存在ViewState中

有什么简单的方法可以做到这一点吗


非常感谢

我建议使用DropDownList控件来显示您的个人结果

在前端,您只需声明您的下拉列表:

<asp:DropDownList id="ddl1" runat="server">
</asp:DropDownList>
仅当需要绑定时(例如在初始页面加载时)或当需要刷新数据源时,才在后端调用此函数

如果您想要一个下拉列表的重播器,只需执行以下操作:

<asp:repeater id="rpt1" runat="server">
   <ItemTemplate>
         <asp:DropDownList id="ddl1" runat="server">
         </asp:DropDownList>
   </ItemTemplate>
</asp:repeater>

Viewstate应负责处理其余部分。

谢谢您的帮助。如果我要使用转发器,你知道我如何将下拉列表限制在每行3个吗?为了确保我理解正确,你想要一个重复控件,每行显示1到3个下拉列表?这就是我所设想的你正在努力实现的目标:。这有点粗糙,但这就是你想要的产出吗?这就是希望。基本上我有一个包含所有DDL的表。这些DDL是在其下方显示的数据集的筛选选项。我不希望他们都排成一行,因为那样他们会挤在一起,因为我不知道会有多少人进去。我也不希望他们是每行一个,因为我认为这将是不直观的。
<asp:repeater id="rpt1" runat="server">
   <ItemTemplate>
         <asp:DropDownList id="ddl1" runat="server">
         </asp:DropDownList>
   </ItemTemplate>
</asp:repeater>
if(!IsPostBack) { //Add method here }