2010-04-08 96 views
0

我的問題是一個設計問題:
比方說,我有一個數據輸入網頁,有4個下拉列表,每個下拉列表取決於前一個,還有一堆文本框。相關輸入設計模式

  • ddlCountry(DropDownList的)
  • ddlState(DropDownList的)
  • ddlCity(DropDownList的)
  • ddlBoro(DropDownList的)
  • txtAddress(TxtBox)
  • txtZipcode(TxtBox)

和一個代表數據行的對象,其值爲每個值:

  • countrySeqid
  • stateSeqid
  • citySeqid
  • boroSeqid
  • 地址
  • 郵編

    自然的一些主鍵的國家,州,城市和硼值是值查找表。

當用戶選擇編輯該記錄時,我會從數據庫加載它並將其加載到頁面中。 我的問題是如何簡化加載DropDownLists。

我有一些代碼可以抓住對象,查看它的值並將它們移動到它們對應的輸入控件中。但在這種情況下,我將不得不加載具有可能值的ddlCountry,然後分配值,然後對其餘的ddls執行相同的操作。

我想我正在尋找一個優雅的解決方案。 我正在使用asp.net,但我認爲這與問題無關。我正在更多地考慮設計模式。

+0

如果你格式化你的問題使其更具可讀性,你更可能得到迴應。 – 2010-04-08 11:26:22

+0

謝謝,我沒有意識到它是如此格式不好 – curiousMo 2010-04-08 15:22:49

回答

0

我已經設計過這樣的屏幕,asp.net真的很難做任何事情,但每次選擇後都會回發,所以它很重要。

這不像服務級合同那樣是設計模式的問題。該網站的響應程度如何?你有什麼樣的關係?用戶是否確切地知道他們想要做出哪些下拉選擇,或者他們是否會花一些時間瀏覽一下?表單是否需要移動設備友好?

這些是影響你設計的問題。讓我解釋。

有兩件事你可以在這裏做。與往常一樣,您實際上可能會選擇混合方式,但極端情況是:

  1. 每個選擇都會觸發一個回傳。該請求通過查詢下一組選項的服務並使用填充的新選項重新構建頁面來處理。顯然這不是特別快速或簡化,但它是最可靠和跨平臺的。
  2. 當頁面加載時,它在javascript中包含一個描述將填充下拉列表的所有選項的結構。最終你只會有一次回傳。顯然這是非常快的,但不利於龐大的列表,如果您在選擇鏈中需要任何種類的高級邏輯,則不是很便攜,並且會帶來一些困難。

一個可能很好的中間可能是把javascript當作一種一級緩存,把服務器當作二級緩存。您在頁面上嵌入了最常選擇的國家/地區,但如果出現錯誤,您會觸發ajax回傳以獲取更多數據。當然,這對你來說還有很多工作要做。

所以是的。希望對你有幫助

+0

感謝您的迴應,我不需要爲移動兼容性。該應用程序正在Intranet中運行。我現在使用第一種方法,但我覺得它很笨拙,更糟糕的是,有些ddls依賴於選擇2位父母。 (沒有包括實際的例子,因爲它需要更多的解釋)。我想你說過,它應該是兩者的混合體。再次感謝 – curiousMo 2010-04-09 14:47:16