2017-01-16 24 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()'のUserControlまたは 'FindCheckBoxに変数として' ClientID'を送信する必要があります() 'を返します。そうすれば、1ページで複数のコントロールを操作することができます。 – VDWWD

+0

@Andrei gv_ucを書くようにしようとしても、その名前は現在のコンテキストに存在しないと言います。 – Agasthya

答えて

0

親ページで、UserControlからClientID変数を受け入れるJavaScript関数を使用できます。

<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); 

UPDATE

の背後にあるコードでは、あなたが親でのコントロールのIDが必要な場合は、UCににFindControlを使用する必要があります。

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

返信いただきありがとうございますが、私はusercontrol上の親ページ上のgridviewのIDが必要です、私はチェックボックスがチェックされているかどうか、またはusercontrolに存在するgridviewでチェックする必要があります。 – Agasthya

+0

親のGridViewのIDを見つけることができ、私の答えが更新されました。 – VDWWD

関連する問題