如何在ASP.NET中的运行时命令控件 例如,我的网页中有三个文本框,顺序如下
我希望根据用户偏好更改这些控件的顺序
这只是一个例子,任何想法?
答案 0 :(得分:2)
最后,我找到了一个解决方案,我将详细解释
创建一个“面板控件”并将其命名为“myPanel”,并将所有要控制的控件放入
<asp:Panel ID="myPanel" runat="server">
<asp:Panel ID="dock1" runat="server">this is first module</asp:Panel>
<asp:Panel ID="dock2" runat="server">this is second module</asp:Panel>
<asp:Panel ID="dock3" runat="server">this is third module</asp:Panel>
</asp:Panel>
输出将是以下
这是第一个模块
这是第二个模块
这是第三个模块
所以我该怎么做才能改变他们的订单,让我们看看 我已创建了更多三个面板,就像码头的容器一样 我的代码就像这样
<asp:Panel ID="myPanel" runat="server">
<asp:Panel ID="container1" runat="server"></asp:Panel>
<asp:Panel ID="container2" runat="server"></asp:Panel>
<asp:Panel ID="container3" runat="server"></asp:Panel>
<asp:Panel ID="dock1" runat="server">this is first module</asp:Panel>
<asp:Panel ID="dock2" runat="server">this is second module</asp:Panel>
<asp:Panel ID="dock3" runat="server">this is third module</asp:Panel>
</asp:Panel>
在后面的代码我有类似的东西
这将从mypanel中删除dock1控件并将其放入container3
Control myCtrl1 = myPanel.FindControl("dock1");
Control containerCtrl1 = myPanel.FindControl("container3");
myCtrl1.Visible = true;
myPanel.Controls.Remove(myCtrl1);
containerCtrl1 .Controls.Add(myCtrl1);
您可以根据数据库或Cookie中的用户偏好来管理这些内容
最好的问候
答案 1 :(得分:1)
答案 2 :(得分:1)
最简单的方法是使用第三方控件,例如Telerik。更确切地说是DockZones 否则,您必须使用此功能创建自己的页面构建器。
答案 3 :(得分:1)
有一个类似的问题,并通过使用“.Controls.AddAt”并为您希望它出现的顺序指定索引来解决。
所以要让我的图表首先出现在我更改的面板中:
GraphPanel.Controls.Add(GE.GetChart(t13));
为:
GraphPanel.Controls.AddAt(0, (GE.GetChart(t13)));
您按3,2和1的顺序订购文本框的示例变为:
Panel1.Controls.AddAt(0,(TextBox3));
Panel1.Controls.AddAt(1,(TextBox2));
Panel1.Controls.AddAt(2,(TextBox1));
答案 4 :(得分:-2)
对于一个非常简单的概念验证,您需要某种类型的后备存储,如存储UserID,Ordinal和AscxFileName的数据库表。在SQL中,您可以运行查询,例如:
SELECT AscxFileName FROM tableControls WHERE UserID=@UserID ORDER BY Ordinal
然后使用结果集:
while(IDataReader.Read())
{
Control myControl = Page.LoadControl(IDataReader["AscxFileName"].ToString());
myPanel.Controls.Add(myControl);
}
答案 5 :(得分:-2)
获取文本框控件的所有ID并将其存储在数组中。然后做一个反向排序:
Array.Reverse( mytextboxArray );