程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> asp.net動態產生checkbox(數據源為DB或內存集合)

asp.net動態產生checkbox(數據源為DB或內存集合)

編輯:ASP.NET基礎
之前在網上看了很多,其實有一些也是大同小異,本人在此小編一下大致解決方案摒棄微軟提供的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(',');

字符串數據不可避免的會有空字符串,注意刪選,否則在拆箱時會出現類型轉換異常
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved