JS實現DataGrid模板列和DetailsView中有多個Checkbox時只許選中一個

 問題的提出:必須保證多個CheckBox只能選中一個,使用Radio有點不合適,因爲必須保證選擇項可以全部不被選中
解決方法來源: http://gwazy.cnblogs.com/archive/2005/07/25/199765.html
謝謝boytomato分享經驗 :)

今天在此基礎上添加了解決在DetailsView控件下的方法,只是只是一點點改動,記錄下來,以備下次使用

1、實現 DataGrid 模板列中有多個checkbox 時只許選中一個

None.gif// 實現 DataGrid 模板列中有多個checkbox 時只許選中一個
None.gif
function change_check(temp)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
var checks= temp.parentElement.parentElement.getElementsByTagName("input");
InBlock.gif    
for (i=0;i<checks.length-1;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (checks[i]!=temp &&checks[i].checked)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            checks[i].checked
=!temp.checked ;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

2、實現 DetailsView 模板列中有多個checkbox 時只許選中一個
ContractedBlock.gifExpandedBlockStart.gif實現 DetailsView 模板列中有多個checkbox 時只許選中一個
None.gif// 實現 DetailsView 模板列中有多個checkbox 時只許選中一個
None.gif
function change_check1(temp)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
var checks= temp.parentElement.parentElement.parentElement.getElementsByTagName("input");
InBlock.gif
InBlock.gif    
for (i=0;i<checks.length-1;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (checks[i]!=temp &&checks[i].checked)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            checks[i].checked
=!temp.checked ;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}


3、使用方法:
None.gif<ItemTemplate>
None.gif                            
<asp:CheckBox id="User" Runat="server" onclick="change_check(this)"></asp:CheckBox>
None.gif                        
</ItemTemplate>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章