我正在尝试从javascript方法访问用户控件,并在该控件中找到gridview以检查gridview上检查的复选框的编号。 但是当我尝试从JS方法中的usercontrol获取gridviews ID时,它显示一个错误:当前上下文中不存在此名称。以下是我写的代码:
<%@ 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 :(得分: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" />
或者在UserControl背后的代码中
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "sendGridID", "FindCheckBox('" + GridView1.ClientID + "')", true);
<强>更新强>
如果您需要父级中的Control的ID,则需要在UC中使用FindControl。
GridView gv = Parent.FindControl("GridView1") as GridView;
Label1.Text = gv.ClientID;