[英]How to sort controls at runtime in ASP.NET
例如,如何在ASP.NET中在运行时订购控件,我的网页中有三个文本框,其顺序如下
我希望根据用户的喜好更改这些控件的顺序
那只是一个例子,有什么主意吗?
最后,我找到了一个解决方案,我将详细解释它
创建一个“面板控件”并将其命名为“ 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中的用户偏好来管理这些事情
最好的祝福
发生了类似的问题,并通过使用“ .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));
最简单的方法是使用第三方控件(例如Telerik) 。 更准确地说是DockZones。
否则,您将不得不使用此功能创建自己的Pagebuilder。
对于非常简单的概念验证,您将需要某种后备存储,例如存储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);
}
获取文本框控件的所有ID,并将它们存储在数组中。 然后只需做一个反向排序:
Array.Reverse( mytextboxArray );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.