2010-08-16 5 views
1

Sur ma page principale ASP.NET, j'ai un champ masqué et un bouton. Lorsque l'utilisateur clique sur le bouton, je montre la fenêtre contextuelle (page enfant). J'ai besoin d'accéder à un champ caché pendant le chargement de la fenêtre. Comment pourrais-je accéder au champ Caché en utilisant C#?Comment accéder à la page Champ caché du parent à partir de la page enfant

+0

S'il vous plaît nous donner le contexte: Windows Forms , ASP.NET, MVC, WPF, Silverlight? –

Répondre

2

Eh bien, vous pouvez transmettre la valeur du champ caché à la chaîne de requête de la fenêtre contextuelle. Quelque chose comme ceci:

<asp:button id="ButtonInMainPage" runat="server" onclick="Popup();return false;" /> 
<asp:hidden id="hiddenValue" runat="server" /> 
<script type="text/javascript"> 
    function Popup() 
    { 
     window.open('Child.aspx?hiddenValue='+document.getElementById('<%=hiddenValue.ClientID%>').value); 
    } 

enfant Dans page_load:

string hiddenValue = Request.QueryString["hiddenValue"]; 

Ce que je montre est simple code, vous devez ajouter vérifier ou les autres en fonction de votre projet.

+0

La valeur que je stocke dans un champ caché est trop longue. Je ne peux pas utiliser la chaîne de requête. – Hukam

+0

Il peut quitter la valeur maximale de Query string.so je vais pour le champ caché. – Hukam

+1

Ensuite, vous pouvez le stocker dans le 'Session [" caché "] = XXXX;' –

0

Ceci est votre question:

Dans la page principale, il y a un gridview qui contient une colonne de cases à cocher, lorsqu'une case d'une ligne est sélectionnée, ajouter l'ID correspondant à un champ caché. Lorsque l'utilisateur clique sur le bouton contextuel, une fenêtre s'ouvre et les ID sélectionnés sont transmis à la nouvelle fenêtre. La question est que les ID sont trop longs à transmettre dans la chaîne de requête.

Ma solution:

Je pense que vous pouvez supprimer le champ caché, et de supprimer tous les scripts client de votre bouton contextuel.

<asp:button id="PopupButton" runat="server" Text="Click to pop up" /> 

Ajouter un événement serveur du bouton, comme:

void PopupButton_Onclick(object sender, EventArgs e) 
{ 
    string IDs = CollectTheSelectedIDsInTheGridView(); 
    Session["IDs"] = IDs; 
    string js = @"<script type='text/javascript'> 
        window.open('Child.aspx'); 
       </script>"; 
    Page.ClientScript.RegisterStartupScript(this.GetType(),"showChild",js); 
} 

EDIT Votre liste de données doit ressembler à ceci:

<table> 
<asp:Repeater ID="myData" runat="server"> 
    <ItemTemplate> 
    <tr> 
     <td><asp:CheckBox ID="selectedFlag" runat="server" Checked=<%# Eval("Checked") %> /></td> 
     <td><asp:Label ID="dataText" runat="server" Text=<%# Eval("TextData") %>></asp:Label></td> 
    </tr> 
    </ItemTemplate> 
</asp:Repeater> 
</table> 
+0

Merci beaucoup Danny chen.Il m'aide beaucoup. :) – Hukam

+0

Comment puis-je obtenir la valeur SelectedRowsID dans serverside.Sa variable Javascript. – Hukam

+0

Pourquoi c'est un contrôle html? Comme vous devez lier des données à la case à cocher, vous devez utiliser un contrôle serveur. Voir ma modification. –

Questions connexes