asp.net動(dòng)態(tài)產(chǎn)生checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)
更新時(shí)間:2013年10月10日 16:18:56 作者:
動(dòng)態(tài)產(chǎn)生一組checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)且post提交時(shí)后臺(tái)能及時(shí)獲取等等,打算使用repeater+input(checkbox)+input(hidden)來(lái)實(shí)現(xiàn)
之前在網(wǎng)上看了很多,其實(shí)有一些也是大同小異,本人在此小編一下大致解決方案摒棄微軟提供的CheckBoxList
需求:
1動(dòng)態(tài)產(chǎn)生一組checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)
2post提交時(shí)后臺(tái)能及時(shí)獲取
3提交后刷新頁(yè)面checkbox保持原先選中或取消選中狀態(tài)
4避免產(chǎn)生大量的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中的匿名函數(shù)代碼寫在頁(yè)頭.
Js代碼
$(":hidden[name='reportType']").each(function () {
var obj = $(this).prev();
if (obj.attr('checked')){ $(this).val(obj.val()); }
});
當(dāng)post提交時(shí)后臺(tái)獲取
string[] _str = Request["reportType"].Split(',');
字符串?dāng)?shù)據(jù)不可避免的會(huì)有空字符串,注意刪選,否則在拆箱時(shí)會(huì)出現(xiàn)類型轉(zhuǎn)換異常
需求:
1動(dòng)態(tài)產(chǎn)生一組checkbox(數(shù)據(jù)源為DB或內(nèi)存集合)
2post提交時(shí)后臺(tái)能及時(shí)獲取
3提交后刷新頁(yè)面checkbox保持原先選中或取消選中狀態(tài)
4避免產(chǎn)生大量的viewstate
方案:使用repeater+input(checkbox)+input(hidden)
html代碼
復(fù)制代碼 代碼如下:
<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中的匿名函數(shù)代碼寫在頁(yè)頭.
Js代碼
復(fù)制代碼 代碼如下:
$(":hidden[name='reportType']").each(function () {
var obj = $(this).prev();
if (obj.attr('checked')){ $(this).val(obj.val()); }
});
當(dāng)post提交時(shí)后臺(tái)獲取
復(fù)制代碼 代碼如下:
string[] _str = Request["reportType"].Split(',');
字符串?dāng)?shù)據(jù)不可避免的會(huì)有空字符串,注意刪選,否則在拆箱時(shí)會(huì)出現(xiàn)類型轉(zhuǎn)換異常
相關(guān)文章
.net實(shí)現(xiàn)ping的實(shí)例代碼
這篇文章主要介紹了.net實(shí)現(xiàn)ping的實(shí)例代碼,需要的朋友可以參考下2014-02-02
ASP.NET將Session保存到數(shù)據(jù)庫(kù)中的方法
因?yàn)锳SP.NET中Session的存取機(jī)制與ASP相同,都是保存在進(jìn)行中, 一旦進(jìn)程崩潰,所有Session信息將會(huì)丟失,所以我采取了將Session信息保存到SQL Server中,盡管還有其它的2013-08-08
使用最小?WEB?API?實(shí)現(xiàn)文件上傳的Swagger支持
這篇文章主要介紹了使用最小?WEB?API?實(shí)現(xiàn)文件上傳Swagger支持,我們使用最小?WEB?API?實(shí)現(xiàn)文件上傳功能,雖然客戶端訪問是正常的,但是當(dāng)打開?Swagger?頁(yè)面時(shí),沒法使用?Swagger?頁(yè)面測(cè)試,下面就來(lái)一篇支持Swagger的,需要的小伙伴可以參考一下2022-02-02
Asp.net簡(jiǎn)單代碼設(shè)置GridView自適應(yīng)列寬不變形實(shí)現(xiàn)思路與代碼
動(dòng)態(tài)綁定的GridView由于列數(shù)不固定,而列又太多(博主做的這個(gè)項(xiàng)目有150個(gè)左右的字段),這樣設(shè)置GridView固定寬度就不能滿足需求了2013-01-01
axp.net ScriptManager的簡(jiǎn)單用法
scriptManager的結(jié)構(gòu),參數(shù),屬性說(shuō)明2008-11-11
理解ASP.NET Core 依賴注入(Dependency Injection)
把有依賴關(guān)系的類放到容器中,解析出這些類的實(shí)例,就是依賴注入。目的是實(shí)現(xiàn)類的解耦。本文主要介紹了ASP.NET Core 依賴注入(Dependency Injection),需要了解具體內(nèi)容的可以仔細(xì)閱讀這篇文章,希望對(duì)你有所幫助2021-09-09
.Net Core微信服務(wù)商二次進(jìn)件的開發(fā)
這篇文章主要介紹了.Net Core微信服務(wù)商二次進(jìn)件的開發(fā),包括服務(wù)商證書獲取方法及查詢進(jìn)件狀態(tài)的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10
關(guān)于.NET動(dòng)態(tài)代理的介紹和應(yīng)用簡(jiǎn)介
關(guān)于.NET動(dòng)態(tài)代理的介紹和應(yīng)用簡(jiǎn)介...2006-09-09

