asp.netでWebサイトを開発しています。RadioButton で編集した GridView を使用しました。これは GridView のコードです。この RadioButton とともに、GridView は DataBase のテーブルから値を取得しており、3 つの列が含まれています。
<asp:GridView ID="creditGridView" runat="server" Width="500" Height="210px" GridLines="None" CssClass="classGridView" >
<Columns>
<asp:TemplateField HeaderText="Pick One">
<ItemTemplate>
<asp:RadioButton ID="radBatId" runat="server" onclick= "javascript:CheckOtherIsCheckedByGVID(this);" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
そして、JavaScript を使用して機能を作成し、GridView で一度に 1 つの RadioButton を選択しました。これは JavaScript コードです。
function CheckOtherIsCheckedByGVID(rdBtn) {
var currentRdBtnId = rdBtn.id;
alert(currentRdBtnId);
var parent = document.getElementById("<%=creditGridView.ClientID%>");
var items = parent.getElementsByTagName("input");
for (i = 0; i < items.length; i++) {
if (items[i].id != currentRdBtnId && items[i].type == "radio") {
if (items[i].checked) {
items[i].checked = false;
}
}
else {
document.getElementById("<%=radioBtnIndex.ClientID%>").value = i;
}
}
}
この関数を GridView を含む同じページに配置すると、正常に動作します。この関数を別の JavaScript ファイルに入れると、エラーが表示されます
UncaughtTypeError: null のメソッド 'getElementByTagName' を呼び出せません
ここで変数parentは値を取得していますnull
。document.getElementById("<%=creditGridView.ClientID%>");
つまり、関数が同じページにない場合、ステートメントは GridView id を取得していません。この問題を解決したり、GridView id にアクセスする別の方法を教えてくれたりできますか?