簡體   English   中英

在運行時並根據用戶輸入創建中繼器模板

[英]Creating Repeater Template at runtime and based upon user input

是否可以以某種方式為中繼器動態創建ItemTemplate?

我正在嘗試使用中繼器,因為它可以控制最多,但是我的要求之一是讓我重新考慮。

我基本上有一些通過Web服務執行的SQL查詢。 而不是讓用戶鍵入整個查詢,我希望他們能夠通過單選按鈕選擇“部件”,“產品”或“包裝”,在文本框中輸入搜索詞,以及其他一些信息,然后在頁面上返回他們想要的結果。 我主要完成了RadioButtons控制邏輯,並且將查詢設置為接受來自文本框的輸入作為帶有通配符的搜索項。 唯一的問題是我正在努力處理中繼器控件。 問題是每個表都有不同的列數,並且它們具有不同的名稱,因此在其中執行<td><%# DataBinder.Eval(Container,\\"DataItem.Description\\") %></td> ItemTemplate是不可能的(我不知道在綁定時間之前要使用3個(可能將來有更多)模板之一)

我嘗試使用文字根據后面的代碼中的邏輯傳遞我想要的內容,但是我無法傳遞內聯函數,並且我無法基於前面的問題來匯總如何執行此操作。

我一直在閱讀MSDN參考資料,似乎如果我學習DataList控件,它將使事情變得更容易,但是如果有一種簡單的方法可以使用中繼器(我也將允許我這樣做),我寧願不要浪費時間。更多控制權)

謝謝

我可能不在這里,但我認為對您遇到的問題的一個簡單解決方案是創建多個帶有內部不同項目模板的轉發器控件,並將它們包裝在面板中。 這樣,根據用戶參數,您可以簡單地將結果綁定到適當的中繼器並將其他面板設置為不可見。

我正在查看一些舊代碼,以了解您如何處理類似情況。 然后我在寫答復之前就看到了傑西的答案。 基本上,我傾向於在那里同意Jesse的觀點-這似乎是您所概述的最直接的解決方案。

所以我不知道這有多大幫助,但是一種可能性是使用MVC模板。 MVC很方便,因為它實際上只能在非常有限的意義上使用(您的整個應用程序都不需要實現它,只需適用的頁面即可),而且它也非常簡單。

有關如何在MVC中執行不同模板的介紹: http : //bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html

可以修改模板,使其根據綁定的對象進行更改,例如WPF DataTemplateSelector的工作方式。

我以為我記得在MVC3或MVC4中看到過一些您可以基於數據類型創建模板(就像在Silverlight中一樣),它將自動選擇該模板的方法,但是現在我很難找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM