ASP.NET AJAX常見問題整理

iDotNetSpace發表於2008-09-11
1.ASP.NET AJAX-Enabled頁面引用指令碼出現的問題

ASP.NET AJAX常見問題整理
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt<head runat="server">
     
<title>Untitled Pagetitle>
     
<script type="text/javascript" src="js/gridviewjs.js"/>
     
<link type="text/css" rel="Stylesheet" href="css/gridviewcss.css" />    
</head>

我原來的js程式碼是這樣的,結果導致畫面上有ScriptManager的時候一直髮生this.form為Null的錯誤。
原因是類似下面的指令碼採用了封閉式的標籤宣告,而
<script type="text/javascript" src="Scripts/SomeFile.js"/>

而將標籤宣告為開放式的形式才有助於AJAX庫判斷引用Javascript的結尾。 

<

script type="text/javascript" src="Scripts/SomeFile.js">script>

2.ASP.NET AJAX中的控制元件ID問題

因為使用AJAX容器控制元件會導致ScriptManager直接在你所使用的空間前面新增字首而改變,如原來控制元件為ExtendGridView1,
而在Tab容器中,則變為tbcMain_tbpOrgnz_ExtendGridView1。而這個ID使用的場景僅限於非.NET頁面事件相關的普通
Javascript函式,如Document.getElementId方法中你可以使用這個ID在客戶端找到該控制元件。

但在伺服器端進行FindControl或者在客戶端使用__doPostback函式的時候一定要使用把"_"轉換成"$"後的控制元件ID,即:
tbcMain_tbpOrgnz_ExtendGridView1 -> tbcMain$tbpOrgnz$ExtendGridView1

在伺服器端我們可以使用String.Replace函式直接進行轉換。在Javascript中比較汗顏的是String.Replace函式一次只轉換一個,
所以我寫了一個Javascript函式來進行客戶端的轉換。

ASP.NET AJAX常見問題整理
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt function getAjaxId(id)
 {
     
while(id.indexOf('_')>-1)
     {
         id
=id.replace('_','$');
     }
     
return id;
 }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-444292/,如需轉載,請註明出處,否則將追究法律責任。