2011-05-05 95 views
3

我已經在C#中創建了一個Windows窗體應用程序,它允許用戶將控件添加到可調整大小和重新定位的TabPage。現在我只想在ASP.NET中做同樣的事情。ASP.NET中的動態控件

我設法按照this tutorial動態添加控件。我使用jQuery UI來使它們可調整大小和可拖動。我遇到的問題是,當我添加一個新控件時,所有其他控件都恢復到其初始位置和尺寸。

我假設我必須保存它們的位置和大小,並將它們應用到LoadViewState上新創建的控件。有沒有一種方法可以從代碼隱藏中查看這些屬性?我已經設法使用JavaScript獲取這些信息,但我不知道如何將它置入代碼隱藏。

有人可以請指出我在正確的方向嗎?提前致謝。

[編輯] 謝謝你的回答。下面的代碼: HTMLC#

+0

您是否在使用ajax(更新面板)與服務器進行通信,或者完成頁面的完整回傳? – 2011-05-05 18:11:02

+0

目前我正在做一個完整的回覆。 – feelshift 2011-05-05 18:12:54

+0

你可以發佈你的html/asp.net代碼和JavaScript嗎? – 2011-05-05 18:14:56

回答

2

你需要存儲的控件的位置和尺寸,並將這些值到服務器時,您單擊添加控制按鈕。

你有幾個選擇如何做到這一點。

  • 查詢字符串
  • 隱藏的表單域(<input type="hidden">
  • 隱藏的文本框(隱藏着style="display: none;"

您可以使用JavaScript來設置這些值,然後應用在你的代碼中的位置添加一個新的控件後。

+1

爲了擴展給出的答案,您需要將隱藏的字段聲明爲服務器控件,然後當你移動一個對象時,在客戶端使用JavaScript將值推入到它們中,然後當回發發生時,您的位置值將在服務器端可用。 這裏有許多選項,一個超級隱藏字段包含以某種方式編碼的所有位置值,或者是添加到頁面中的每個控件的每個屬性的隱藏字段。 – 2011-05-06 16:45:40

+0

@pb不一定。隱藏的表單字段不是服務器控件,可以通過後面的代碼中的'Request.Params'來訪問,由'name'屬性來鍵入。實際上,如果值將通過javascript設置,我發現使用非服務器控件隱藏字段會更容易。 – 2011-05-06 16:57:05

+0

我已經添加了一個Server TextBox,其中我已經通過JavaScript保存了控件的配置。但是我堅持什麼時候將其應用於控件。我應該在'LoadViewState'上做,但我只能訪問以'OnPreLoad'開頭的TextBox。我無法弄清楚如何使用'Request.Params'。 – feelshift 2011-05-07 12:32:49