repeater繫結泛型list

2022-03-26 05:22:59 字數 1524 閱讀 6916

菜鳥d重出江湖,依然是菜鳥,囧!言歸正傳——

工作中遇到乙個repeater繫結的問題,資料來源是乙個list集合,然後在介面上使用<%#eval()%>繫結。問題來了,eval該繫結那個屬性名(或者字段)呢?

先說菜鳥d的想法:將list變成list《匿名》 ,然後繫結匿名型別的某一屬性。菜鳥為啥會有這樣的想法,首先list只用一次,而且只有乙個屬性(字段),沒有必要新宣告乙個型別,匿名就可以勝任,反正我們更關心的是屬性(字段)而不是型別。其次,你不覺得寫乙個匿名集合有夠高大上麼?!

然後有位朋友提示可以使用動態dynamic(自行腦補),於是乎,菜鳥d搞出來乙個動態集合(這個貌似會敲**都會寫吧),動態集合裡隨意插入,沒人在意是什麼型別,當然集合裡型別是一致的,你總不能插乙個int,再插乙個string吧。此時匿名就派上用場了。

listlist = new list();

list.add(

new );

list.add(

new );

這時候繫結就沒有問題了,eval也可以找到合適的屬性(字段)來繫結了。這種方法就是採用匿名型別+動態集合來繫結的,硬生生把string變成乙個實體類,想想也沒必要。

然後在網上找個下,還真找到類似的情況,博問裡邊還給出了解決方案。

<%# ((string)container.dataitem)%>

就是這麼簡單,你不用考慮什麼實體類。菜鳥d只能拜服:高人啊!

這個問題提供了兩種解決方案,哪一種更適合就選哪一種唄。不過菜鳥d感覺動態集合+匿名型別只是在這裡不是最佳方案,一定有更適合的地方。不足之處,歡迎指正。

菜鳥d希望這篇文字能夠幫到你。

下面內容屬於基礎知識科普:

匿名型別:匿名型別提供了一種方便的方法,可用來將一組唯讀屬性封裝到單個物件中,而無需首先顯式定義乙個型別。 型別名由編譯器生成,並且不能在源**級使用。 每個屬性的型別由編譯器推斷。注意:屬性是唯讀的,也就是說匿名型別適合展示。由於屬性唯讀,賦值什麼的就不要想了,編譯不通過的。匿名型別更多的使用於linq語句中。

var v = new ;

console.writeline(v.amount + v.message);

動態型別dynamic(csdn上為使用型別):dynamic.'> dynamic bypasses static type checking.'>該型別是一種靜態型別,但型別為 dynamic 的物件會跳過靜態型別檢查。 object.'>大多數情況下,該物件就像具有型別 object 一樣。 dynamic is assumed to support any operation.'>在編譯時,將假定型別化為 dynamic 的元素支援任何操作。 

在宣告中,作為屬性、字段、索引器、引數、返回值或型別約束的型別。在顯式型別轉換中,作為轉換的目標型別。在以型別充當值(如 is 運算子或 as 運算子右側)或者作為 typeof 的引數成為構造型別的一部分的任何上下文中。

dynamic在mvc中使用的更多,也有人說它與js的var很像(當然指用法)。經常與 expandoobject 一起使用,常用mvc的人應該簡單比較多。

DataGridview 繫結泛型List

1 datagridview資料繫結對比 datatable與泛型list 當datagridview的datasource是datatable的時候,datatable的資料改變時,datagridview的資料會隨之改變,無需重新繫結到datagridview。當datagridview的dat...

DataGridview 繫結泛型List

1 datagridview資料繫結對比 datatable與泛型list 當datagridview的datasource是datatable的時候,datatable的資料改變時,datagridview的資料會隨之改變,無需重新繫結到datagridview。當datagridview的dat...

巢狀Repeater繫結

今天做了乙個小東西,功能類似於 的產品分類列表。如圖 我是採用了雙層巢狀repeater繫結,不知道大家還有沒有更好的方法,有的話放上來分享一下啊!下面看我做的例子吧 首先前台頁面加兩個repeater了 然後就是資料集了,在後台我是用dataset作為資料集的。先在資料庫中建立了乙個儲存過程,這個...