Как получить доступ к элементу управления gridview в usercontrol из метода javascript

Я пытаюсь получить доступ к пользовательскому элементу управления из метода javascript и найти gridview в этом элементе управления, чтобы проверить номер для флажков, установленных на gridview.
Но когда я пытаюсь получить идентификатор gridviews от usercontrol в методе JS, он показывает ошибку: это имя не существует в текущем контексте. Ниже приведен код, который я написал:

<%@ 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 является gridview на usercontrol.

1 ответ

  1. На родительской странице вы можете иметь функцию JavaScript, которая принимает ClientIDпеременную от UserControl.

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

    Затем в UserControl можно вызвать функцию с правильным идентификатором.

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

    Или в коде позади UserControl

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

    ОБНОВЛЕНИЕ

    Если вам нужен идентификатор элемента управления в родителе, необходимо использовать FindControl в UC.

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