2017-01-16 75 views
0

我試圖從javascript方法訪問用戶控件,並在該控件中查找gridview以檢查gridview上選中的複選框的數量。 但是,當我嘗試從JS中的usercontrol獲取gridviews ID時,它顯示一個錯誤:該名稱在當前上下文中不存在。下面是我寫的代碼:如何通過JavaScript方法訪問usercontrol中的gridview控件

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Test.Web.uc" 
MasterPageFile="~/SiteMain.Master" EnableEventValidation="false" %> 

<%@ Register Src="~/UserControls/UC1.ascx" TagName="uctest" TagPrefix="uc" ID="gv_uc" %> 

<script type="text/javascript"> 
function FindCheckBox() 
{ 
    var checkBoxSelector = document.getElementById('<%=gv_uc.("gvgridname").ClientID%>'); 
} 
</script> 

gvgridname是usercontrol上的gridview。

+0

這'gv_uc。( 「gvgridname」)。ClientID'看起來錯誤的,應該只是'gv_uc.ClientID' – Andrei

+0

認沽'FindCheckBox()'在用戶控件或發送'ClientID'作爲變量'FindCheckBox ()'。這樣它就可以用於單個頁面上的多個控件。 – VDWWD

+0

@Andrei即使我嘗試編寫gv_uc,它表示該名稱在當前上下文中不存在。 – Agasthya

回答

0

在父頁面上,您可以使用JavaScript函數接受來自UserControl的ClientID變量。

<script type="text/javascript"> 
    function FindCheckBox(ID) { 
     var checkBoxSelector = document.getElementById(ID); 
    } 
</script> 

然後在UserControl中,您可以使用正確的ID調用該函數。

<input type="button" onclick="FindCheckBox('<%= GridView1.ClientID %>')" value="ClickMePlease" /> 

還是在用戶控件

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "sendGridID", "FindCheckBox('" + GridView1.ClientID + "')", true); 

UPDATE後面的代碼

如果您需要在父控件的ID,您需要在UC使用的FindControl。

GridView gv = Parent.FindControl("GridView1") as GridView; 
Label1.Text = gv.ClientID; 
+0

感謝您的回覆,但我需要在父頁面上的gridview ID不在usercontrol上,我需要檢查複選框是否已檢查或不在usercontrol中存在的gridview中。 – Agasthya

+0

更新了我的答案,您可以在Parent中找到GridView的ID。 – VDWWD

相關問題