我有被安排在一個特定佈局的用戶控件的網頁上工作的位置。我正在修改該頁面以支持根據用戶的偏好重新排序。所以,實際上,在負載方面,我掌握了我需要定位不同用戶控件的信息。重新排序用戶控件的ASP.NET頁面
我能想到的方法2:
- 請在客戶端的重新排序。這對於用戶 而言並不理想,因爲他們發現重新排序正在進行。
- 在服務器端重新排序。這需要我做很多重寫來根據首選項動態加載用戶控件。
有沒有完成什麼,我試圖做的任何其他方式?
我有被安排在一個特定佈局的用戶控件的網頁上工作的位置。我正在修改該頁面以支持根據用戶的偏好重新排序。所以,實際上,在負載方面,我掌握了我需要定位不同用戶控件的信息。重新排序用戶控件的ASP.NET頁面
我能想到的方法2:
有沒有完成什麼,我試圖做的任何其他方式?
還有一個更簡單的方法;渲染由父容器渲染它們來控制。可以創建一個容器,並且可以完全控制其子對象的渲染順序(通過重寫RenderChildren方法)。這不是最簡單的選擇,但它可以工作。步驟如下:
我將有一種方法來重新定位'RenderChildren'中的用戶控件嗎?這與使用'LoadControl'動態加載它們有何不同? – DotnetDude
動態加載也很好;你可以走這條路。動態加載控件雖然很麻煩,因爲你必須確保每次都按照相同的順序將它們添加到樹中。是的,你按照你想要的順序呈現控件,所以你也可以完全控制它。 –
我不想去動態加載路線。過去並不愉快。你能指點我如何重寫'RenderChildren'指定順序的資源嗎?謝謝 – DotnetDude
我會建議重新安排的客戶端,因爲
如何才能做到你
這種方法的缺點是,你將不得不使用絕對定位。
通過設置可見性在客戶端執行此操作,用戶可以感覺到加載該頁面需要更長的時間,因爲他們必須等待重新排序時發生客戶在我們讓他們看到之前。 – DotnetDude
控件正在重新排列時顯示載入圖像。 –
你也必須小心,因爲在每次回寄時,你都必須重新排列它們。 –
這些控件的數據源是什麼?我想象一下,如果它繼承自IEnumerable(實體框架,Linq-to SQL,甚至普通的舊List <>),則可以簡單地更改OrderBy並重新綁定數據源,假設您的佈局是在Repeater或其他類似的控件中完成的。 – Richthofen
他們是用戶控件(ascx)。 – DotnetDude
由於Page.Controls或WhateverContainerObject.Controls對象是IEnumerable,我們可以在那裏排序嗎?類似於 Page.Controls.Cast().ToList(); 然後清除現有的控件,並使用上述語句做OrderBy或類似的東西。 –
Richthofen