0

たとえば、ASP.NET で実行時にコントロールを注文する方法 Web ページに次の順序で 3 つのテキスト ボックスがあります。

  • テキストボックス1
  • テキストボックス2
  • テキストボックス3

ユーザーの好みに応じてこれらのコントロールの順序を変更したい

  • テキストボックス3
  • テキストボックス2
  • テキストボックス1

それは単なる例ですが、何か考えはありますか?

4

6 に答える 6

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>

出力は次のようになります

これは最初のモジュールです

これは 2 番目のモジュールです

これは 3 番目のモジュールです

順序を変更するにはどうすればよいですか。ドックのコンテナーのように機能するパネルをさらに 3 つ作成したことを確認してください。私のコードは次のようになります。

<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>

コードビハインドで私はこのようなものを持っています

これにより、dock1 コントロールが mypanel から削除され、container3 に配置されます

    Control myCtrl1 = myPanel.FindControl("dock1");
    Control containerCtrl1 = myPanel.FindControl("container3");
    myCtrl1.Visible = true;
    myPanel.Controls.Remove(myCtrl1);
    containerCtrl1 .Controls.Add(myCtrl1);

データベースまたは Cookie からのユーザー設定に応じて、これらのことを管理できます。

よろしくお願いします

于 2009-01-30T07:40:57.453 に答える
1

jQuery UI フレームワークはそれを行うことができます。このデモと同じドキュメントをチェックしてください。

于 2009-01-30T07:15:59.407 に答える
1

最も簡単な方法は、 Telerikなどのサードパーティ コントロールを使用することです。より正確には DockZones。
そうしないと、この機能を備えた独自のページビルダーを作成する必要があります。

于 2009-01-30T07:18:37.967 に答える
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));
于 2013-06-24T14:43:06.927 に答える
-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);
}
于 2009-01-30T02:45:36.830 に答える