0

我正在asp.net 中开发一个网站。我使用了一个用 RadioButton 编辑的 GridView。这是 GridView 的代码。随着这个 RadioButton GridView 正在从数据库中的表中获取值,它包含 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 中一次选择一个 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 正在获取 value null。即,document.getElementById("<%=creditGridView.ClientID%>");当函数不在同一页面中时,该语句未获取 GridView id。谁能帮我解决这个问题或给我另一种访问 GridView id 的方法?

4

1 回答 1

0

您不能<%=creditGridView.ClientID%>在单独的 js 文件中使用表达式。如果这样的表达式只放在 aspx 页面上,它会在页面呈现期间评估并替换为计算值(例如,gridview 控件的客户端 ID)。但是由于 asp.net 没有处理单独的文件,所以它保持原样。您可以使用一些 css 类标记 GridView,并在单独的 js 文件中使用 css 类选择器来获取 GridView。

于 2013-01-06T08:21:13.947 回答