之前在網上看了很多,其實有一些也是大同小異,本人在此小編一下大致解決方案摒棄微軟提供的CheckBoxList
需求:
1動態產生一組checkbox(數據源為DB或內存集合)
2post提交時后臺能及時獲取
3提交后刷新頁面checkbox保持原先選中或取消選中狀態
4避免產生大量的viewstate
方案:使用repeater+input(checkbox)+input(hidden)
html代碼
復制代碼 代碼如下:
asp:Repeater runat="server" ID="RPT_ReportType">
ItemTemplate>
input type="checkbox" value='%#Eval("Id") %>' onclick="{var next = $(this).next();if($(this).attr('checked')){next.val($(this).val())}else{next.val('')}}" runat="server"/>%#Eval("TypeName")%>
input type="hidden" name="reportType"/>
/ItemTemplate>
AlternatingItemTemplate>
input type="checkbox" value='%#Eval("Id") %>' onclick="{var next = $(this).next();if($(this).attr('checked')){next.val($(this).val())}else{next.val('')}}" runat="server"/>%#Eval("TypeName")%>
input type="hidden" name="reportType"/>
/AlternatingItemTemplate>
/asp:Repeater>
注:盡量把里面的OnClick中的匿名函數代碼寫在頁頭.
Js代碼
復制代碼 代碼如下:
$(":hidden[name='reportType']").each(function () {
var obj = $(this).prev();
if (obj.attr('checked')){ $(this).val(obj.val()); }
});
當post提交時后臺獲取
復制代碼 代碼如下:
string[] _str = Request["reportType"].Split(',');
字符串數據不可避免的會有空字符串,注意刪選,否則在拆箱時會出現類型轉換異常
您可能感興趣的文章:- .Net Core內存回收模式及性能測試對比分析
- asp.net中C#實現手動回收內存的方法
- 基于.NET BitmapImage 內存釋放問題的解決方法詳解
- asp.net 獲取機器硬件信息(cpu頻率、磁盤可用空間、內存容量等)
- .Net程序內存異常的原因及解決