如何从javascript方法访问usercontrol中的gridview控件

时间:2017-01-16 14:20:04

标签: javascript asp.net gridview user-controls master-pages

我正在尝试从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。

1 个答案:

答案 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;