Masquer/afficher un tableau html avec C# et Javascript

Je suis en train de travailler sur un site web en utilisant ajax et C#. J'ai commencé l'apprentissage de ces langues, il y a quelques mois, donc je ne suis pas toujours sûr de ce que la meilleure pratique consiste à accomplir des choses.

J'ai un formulaire dans lequel certains contrôles doivent être masqués ou affichés en fonction de l'action de l'utilisateur. Il commence montrant un champ "id" (avec d'autres domaines), mais si l'utilisateur ne connaît pas leur identité, ils cliquent sur un lien qui provoque le champ "id" de devenir cachés et affiche un tableau qui contient des contrôles supplémentaires et un bouton "rechercher". Je suis actuellement en utilisant Javascript pour gérer le et cliquez sur masquer/afficher les contrôles:

function showSearchTable() {
    document.getElementById('IDNumberRow').style.display = 'none';
    document.getElementById('DontKnowId').style.display = 'none';
    document.getElementById('infoSearchTable').style.display = 'block';
}

Lorsque le bouton "rechercher" est cliqué, l'application tente de rechercher les informations supplémentaires dans la base de données et indique à l'utilisateur le résultat. Comme un résultat de l'appel de serveur, la page est rechargée, ce qui provoque la table de devenir à nouveau masqué. Voici mon problème: si le numéro de téléphone ne peut pas être trouvé, je tiens à garder la table visible, de sorte que l'utilisateur peut corriger d'éventuelles erreurs.

J'ai essayé d'ajouter le code qui rend le tableau caché dans le code-behind de sorte que le dos ne cause pas la table de devenir invisible:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        infoSearchTable.Visible = false;
    }
}

Cependant, comme la table qui contient l'attribut runat="server" afin de le voir dans le code c#, je n'arrive pas à faire référence dans mon code javascript afin de le mettre visible par le client. J'ai essayé ce que pour le javascript:

function showSearchTable() {
    document.getElementById('IDNumberRow').style.display = 'none';
    document.getElementById('DontKnowId').style.display = 'none';

    var infoSearch = document.getElementById('<%=infoSearchTable.ClientID%>');
    infoSearch.style.display = 'block';
}

et la table html:

<table id="infoSearchTable" runat="server">
....table rows/columns containing controls
</table>

mais j'obtiens un message d'erreur disant que "infoSearch" est null.

Je pense que je serais en mesure d'accomplir les deux tâches (jeu masqué tableau visible avec le Javascript, mais le garder visible sur le post de retour) moi-même, mais je pense que mon code est plus compliqué que nécessaire, surtout que je suis de nouveau à ajax, .net et C#. Je suis donc à la recherche de conseils - Suis-je sur la bonne voie? Ai-je fait quelque chose dans le mauvais sens? Est-il une autre façon de le faire?

OriginalL'auteur purplecat | 2011-11-04