2011-11-04 25 views
1

我正在研究一個允許用戶更新數據一段時間的asp.net應用程序。該數據是作爲一個表:如何通過多個選擇控件來減少網頁大小

日期 - 活動 - 積極推廣

04/11/11 - 是 - 列表框與360項

5月11日/ 11-是 - 用列表框360項

06/11/11 - 是 - 列表框與360項

...

04/02/12 - ÿ es - 帶有360個條目的列表框

現在,表格可以有90-700行(例如允許輸入90-700天)並且選擇框具有360個條目(12,000個字符)。因此,對於3個月的顯示屏,我可以獲得90 * 12,000 = 1MB的頁面大小,並且在2年的顯示中增加到8.4MB。

我可以看到問題是許多重複的列表框。我想到了以下方法,或許人們可以提出改進建議或改進:

  • 點擊了當每個列表框填充自身(減少初始頁面大小,但用戶可能需要等待下拉填充)
  • 有無一個'真正的'列表框和許多'假'列表框。當用戶點擊一個'假'列表框時,顯示'真實'列表框,然後將所選值存儲在一個隱藏字段中
  • 讓客戶端清理數據,以便每個框中沒有300多個選項

回答

1

如果選項對每個列表框都是一樣的,我肯定會建議在點擊時用javascript自動填充。我之前使用過這個解決方案的原因完全一樣,並且在彈出選擇列表中沒有可察覺的延遲,並且原始頁面加載方式更快。

另外,Firefox在處理大量選擇元素時會出現bug,並且在必要的解決方案中填充javascript也會避免這種情況。

+0

嗯,javascript肯定會比每個調用的ajax都好。這也是一個內部網站,只支持IE8,所以(幸好)我不必擔心其他瀏覽器。 – yamspog

+0

Ajax == Javascript ... http://en.wikipedia.org/wiki/Ajax_%28programming%29 – TheGeekYouNeed

+0

不完全 - AJAX是javascript的一個子集,在這種情況下,它會建議發送一個請求到服務器去問獲取select元素的選項列表。這會引起明顯的延遲。我的建議是在單個虛擬select元素上提供選項列表,並將選項列表複製到任何單擊的select元素。從經驗來看,這在大多數瀏覽器上都會非常快,而且不會引起注意。 – asc99c

0

我會像第二個選項一樣。你也可以做的是首先填充第一個,然後使用JavaScript將內容複製到其他人。

但在其他方面 - 似乎你有一些可用性問題需要解決,誰會使用這種怪物形式!? :)

+0

我同意你的怪物形式,但這是一個內聯網站點,並且一小羣用戶似乎普遍接受怪物形式。他們發現一次更新兩年的數據是很容易的。 – yamspog

+0

啊,普通用戶的好處。 :) 祝你好運! –

0

我將輸入限制在一個月一次,並將其存儲在內存中,直到準備好將事務完成回到數據庫。我也會回顧一下這個控制的選擇,也就是,而不是一個列表框來思考更直觀的東西;可能是帶有文本框的日曆 - 您可以使用製表符並從一個月移到下一個月。