最近在grid里添加一個單選列,最開始直接創建一個模板列,然后在模板列里放一個radiobutton。并指定其GroupName。這是radiabutton最常用的方法。但是在Grid里,這樣卻毫無效果。
開始打算用javascript寫響應radiobutton的onclick函數。思路的確可以。但是為什么radiobutton在grid里指定了其GoupName還是不能實現單選呢?
寫了個測試用例。前臺代碼如下:(數據在后臺綁定了)
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">
<title>無標題頁</title>
<script>
function setradio(grid,radio){
var grid=document.getElementById(grid);
var radios=grid.getElementsByTagName("input");
for(var i=0;i<radios.length;i++){
if(radios.type=radio&&radios[i]!=radio){
radios[i].checked=false;
}
}
}
</script> </head>
<body>
<form runat="server">
<div>
<asp:GridView runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:RadioButton runat="server" GroupName="chooze"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
調試時Grid顯示的頁面為:
很明顯,gird被解析成一個table。里面的radiobutton被解析成input。這個是很自然的。此外,VS還(通過添加前綴)刻意保證每個radiobutton的GroupName都不一樣。所以在grid里通過指定其groupName的方式來使得模板列中的radiobutton為同一個組是行不通的(就是有點想不通為什么微軟要這樣做,可能是一個bug)。實現在grid里單選的比較簡單的方法就是用Javascript函數。就是上面前臺代碼的那個setradio()函數。
新聞熱點
疑難解答