2013-01-06 46 views
0

我開發在asp.net網站的方法「getElementByTagName」。 我用一個用RadioButton編輯的GridView。這是GridView的代碼。隨着這個RadioButton GridView從數據庫中的表中獲取值,它包含3列。UncaughtTypeError:不能叫空

<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:Cannot call method 'getElementByTagName' of null

這裏變量父所獲得的價值null錯誤。即語句document.getElementById("<%=creditGridView.ClientID%>");在函數不在同一頁中時沒有獲取GridView ID。任何人都可以幫助我解決這個問題,或給我一個替代方式來訪問GridView ID?

+0

你有兩個問題:1,文檔具有的getElementsByTagName方法 2.你的父母變量爲空。一次解決它們兩個,然後設置好。您可以通過在瀏覽器中查看生成的HTML源代碼來解決這些問題。 – Sanchit

+0

感謝Sanchit.ur的指導是非常有價值的。我得到了解決方案。 – samiaj

+0

不客氣。你至少可以投我的評論:P – Sanchit

回答

0

你不能在單獨的js文件使用像<%=creditGridView.ClientID%>表達式。如果這種表達式放置在aspx頁面上,它將在頁面渲染過程中進行評估並用計算值(例如gridview控件的客戶端ID)替換。但作爲單獨的文件不會由asp.net進行,它保持原樣。你可以用一些css類標記GridView,並使用css類選擇器來分離js文件來獲取GridView。

+0

Thanks.Can你給我一個這個例子的代碼 – samiaj