javaScript與asp.net-clientid用法
來源:互聯網
上載者:User
javaScript與asp.net1擷取clientid<asp:Button ID="btnValidate" runat="server" Text="ValidateGrid" /> 我們可以通過運算式語句和JavaScript組合得到這個控制項的用戶端ID,如下: 1<script type="text/javascript">2function GetClientID()3{4 var btn = document.getElementById("<%=btnValidate.ClientID %>");5 alert(btn.value);6}7</script> OK,這好象可以滿足我們的需求,我們可以測試GetClientID方法以驗證此方案的正確性,結果為ValidateGrid。3為頁面上的某個伺服器控制項添加Javascript事件伺服器控制項最終產生的仍然是普通的HTML,比如<asp:textbox>產生input text。表單中的每個HTML控制項都有它自己的Javascript事件,比如Textbox有onchange事件,Button有onclick事件,Listbox有onchange事件等。要想為伺服器控制項添加用戶端的事件,需要用到Attributes屬性。Attributes屬性是所有的伺服器控制項都有的一個屬性,它用來為最終產生的HTML添加自訂的一些標記。假設Web Form上有一個儲存按鈕btnSave,希望在使用者點此按鈕時提示使用者是否確實要儲存(比如一旦儲存就無法恢複等),則應在Page_Load事件中添加如下代碼:if not page.isPostBack() thenbtnSave.Attributes.Add(“onclick”,”Javascript:return confirm(‘Are you sure to save?’);”)end if要注意的是‘return’,這是不可省的,否則即使使用者點了取消,資料仍然會儲存。 32.為Datagrid中的每一行添加Javascript事件假設Datagrid的每一行有一個刪除按鈕,希望在使用者點此按鈕時提示使用者是否確實要刪除此條記錄,以防使用者點錯了行,或僅僅是無意中點了刪除按鈕。無論這個刪除按鈕是什麼名字,都不能象上個例子那樣直接引用,因為每一行都有這樣一個按鈕,它們是Datagrid中的子控制項。在這種情況下,需要用到Datagrid的OnItemDataBound事件。OnItemDataBound事件發生在Datagrid的每一行資料繫結到Datagrid之後(即一行激發一次)。首先在Datagrid的聲明中添加如下代碼:<asp:datagrid id="grd1" runat="server" OnItemDataBound = "ItemDataBound" >…Columns definition here</asp:datagrid> 此處說明OnItemDataBound事件發生時調用ItemDataBound方法,在代碼後置檔案中添加此方法的定義:Sub ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)If e.Item.ItemType <> ListItemType.Header And e.Item.ItemType <> ListItemType.Footer ThenDim oDeleteButton As LinkButton = e.Item.Cells(5).Controls(0)oDeleteButton.Attributes("onclick") = "javascript:return Confirm ('Are you sure you want to delete" & DataBinder.Eval(e.Item.DataItem, "m_sName") & "?')"End IfEnd Sub由於Datagrid的標題列和腳註行也會激發此事件,所以首先判斷激發此事件的行不是標題列和腳註行。這裡假設Delete按鈕位於Datagrid的第6列(第一列是0),且Datagrid的Datasource中包含名為”m_sName”的列