2017-01-16 61 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

相关问题