2010-01-01 60 views
2

我想在我的網站上做一個日曆。所以在我的C#代碼中,我製作了該日曆的所有表格單元格(我將它作爲一個html字符串返回到我的視圖中)。雖然這樣做,我檢查我的數據庫,看看是否有任何任務進入該單元格,並循環直到沒有任務離開。然後,我繼續前進到下一個單元格,並再次執行相同的操作。如果另一個絕對位置已經在該位置上,可以移動絕對位置?

但是有些任務會跨越一天,所以當我生成任務時,我會計算出它跨越多少天,並將圍繞該任務的任務劃分爲多個天,表格單元格。

但是爲了顯示這個跨越多天的div,我必須將所有這些div用css絕對地表示出來。否則,因爲我使用「CSS溢出」,任何不適合單元格的東西都會隱藏起來,所以如果我在這個div上有背景色,它將只顯示該單元格的背景顏色,因爲其餘部分會隱藏起來。所以即使寬度足夠長,它總是隱藏在下面。

所以通過使用「css絕對」,在同一個單元格中的所有任務只是堆積在一起。我發現如果我在每個div上放一個保證金頂,我可以避免這種打樁。然而,它不會幫助我解決下一個問題。

假設我有一項任務,跨越2天1月1日至1月2日。它的寬度恰好跨越2個單元格。

由於這個div有絕對的設置和橫跨2天。

http://img35.imageshack.us/img35/3808/screenshot001mo.jpg

此圖片顯示如何,如果它佔據2個日子裏會看。

現在他們去了1月2日再增加一項任務。這個任務將放置在1月1日和1月2日的任務的黃色背景之上,這使得1月1日的任務跨越到1月2日並不明顯。

http://img35.imageshack.us/img35/806/screenshot002ml.jpg

此圖片顯示了我添加了另一個任務,1月2日。如此重疊已經發生了,它很難說第一個任務跨越了兩天。現在想象一下,如果你不得不在兩天內完成2天的任務。

所以我需要一些方法來檢測這些碰撞或什麼東西,以便如果有東西佔據那個空間,它將它移動或者其他東西。

我希望是有道理的

你可以看到這個jQuery插件,我有點後造型雷。他們有些如何使任務不相互重疊。

http://arshaw.com/fullcalendar/

我使用了以下內容:

  • asp.net的MVC
  • C#
  • jQuery的
  • HTML
  • CSS
+0

由於這個原因,使日曆視圖很爛。您可能值得花時間看看是否可以找到適合您的某種插件。 – tybro0103 2010-01-02 07:10:58

回答

1

這是一個艱難的。

當使用絕對位置時,如果現場被拍攝,沒有辦法讓事情自動轉移到另一個位置。

您可以作弊,讓它們重疊並使用透明膠片(50%不透明度)和z-index。當期間重疊時,他們會發光。然後,您可以給每個期間一個onclick事件,將酒吧的z-index一步放在背景中,以實現非常原始的混洗。 非常大致爲:

<div class="period" onclick="this.style.zIndex = this.style.zIndex-2;">1 Day span</div> 

你就必須實現與事實涉及的Z-指數將不斷下降,下降到零度以下的機制,所以這只是一個非常粗略的輪廓。

這在用戶體驗方面並不是很好,但它可以完成這項工作,並且所有信息都可以讓用戶訪問。

如果你想正確地做到這一點,我認爲你不會在每一行中記錄當前的「清除車道」,即有多少個運行時間段以及需要調整多少時間新時期的開始y位置。

另一種更簡單的方法不是使用絕對定位,而是使用跨越整行的容器內的普通立式工作臺div編輯:但是,當一段時間跨越多行時,這會給你帶來麻煩。不,你不會繞過你自己來計算職位。