Je crée une application web pour mon entreprise qui doit gérer le traitement des formulaires et la manipulation des bases de données. L'application est implémentée à l'aide de .NET Framework 3.5 en utilisant C # et Visual Studio 2008 comme IDE et Microsoft SQL Server 2005 comme base de données.

Voici mon problème:

  1. J'ai beaucoup de formulaires

  2. Mais mon patron veut seulement que je crée une seule page pour la base de données traitement (plus facile à étendre à l'avenir)

J'ai compris que la seule façon de résoudre ce problème était de n'avoir qu'un seul fichier .aspx (qui contient tout sur la base de données) et de l'avoir invoqué en tant que fenêtre contextuelle chaque fois qu'un formulaire devait traiter la base de données.

Voici un autre de mes problèmes:

  1. En raison de la nature sans état de HTTP, je suis incapable de traiter et de transmettre variable entre 2 fenêtres différentes.

  2. J'ai réussi à créer certaines fonctions Javascript et à avoir variable transférée à l'écran, mais elle ne peut transmettre qu'une variable c'est la clé primaire du tableau. Pour traiter d'autres colonnes dans le tableau est possible mais comme conséquence je dois écrire un très long script en ligne dans ma page .aspx et après qu'il soit compilé les gens peut facilement voir comment accéder facilement à la base de données de ma société. Par conséquent, je je ne suis pas favorable à cela (à côté de traiter 1 formulaire, je dois créer un code long déjà, imaginez si j'ai plus de 1000 formulaires!)

Il y a donc deux façons pour vous de m'aider:

  1. Suggérer un autre moyen que d'ouvrir une nouvelle fenêtre pour mon problème, peut-être même conseiller sur la façon dont il est mis en œuvre.

  2. Si vous pensez que faire apparaître la solution est la solution, pensez à partager extraits qui peuvent m'aider à comprendre la variable passant entre deux fenêtres différentes . Je peux utiliser certains conseils en particulier de certains Expert Javascript à ce sujet :).

Remarque: La solution doit être réalisable dans ASP.NET Framework 3.5 et testée à l'aide de la version du navigateur IE: 8.

P.S: Ceci est une courte explication sur mon flux d'application

  1. Disons que j'ai entré des données sur un produit (il a peu d'identifiant de propriétés, de nom, de prix, etc.) dans la base de données

  2. Plus tard, je veux en quelque sorte modifier une ou quelques propriétés de ce produit, donc je dois lancer un formulaire qui s'appelle "editor.aspx"

  3. Au lieu de saisir l'ID du produit (qui est la clé primaire) dans le formulaire (et de modifier les données en fonction de l'ID du produit entré) et de risquer de mal calculer les données correctes, je fournis un petit bouton dans le formulaire (disons nommez-le btSearch), qui lancera une nouvelle fenêtre contextuelle qui contient la grille de la base de données de tous les produits (avec la sélection activée)

J'espère que mon explication ci-dessus efface l'air, merci.

0
rofans91 9 nov. 2011 à 10:23

4 réponses

Meilleure réponse

J'ai récemment écrit quelque chose comme ça: Un gestionnaire de base de données en tant que fichier aspx. Mais je l'ai invoqué en utilisant ajax / jquery.

Lorsque mon fichier aspx est terminé, j'écris quelque chose dans le flux de réponse, du code, une chaîne json, quoi que ce soit.

Exemple:

$.post("yourdatabasehandler.aspx", { name: "John", lastname: "Smith" }, function(data) {
    alert("Response from page: " + data);
  });

Dans cet exemple, le nom et le nom de famille sont des valeurs qui sont publiées sur votre site. Vous pouvez y accéder comme ça:

string name = Request.Params["name"]
// Do your database , validation and whatever logic here
Response.Write("Cool dude");

Le javascript ci-dessus alertera "Cool mec" une fois votre gestionnaire de base de données terminé. Dans votre javascript, vous pouvez réagir à la réponse comme vous le souhaitez - par exemple, recharger une page.

J'espère que cela pourra aider? Cordialement

1
Grrbrr404 9 nov. 2011 à 06:56

Si vous utilisez une fenêtre contextuelle, vous pouvez toujours utiliser QueryStrings pour transmettre une valeur à votre fenêtre contextuelle.

window.open("popup_page.aspx?id=" + id + "&name=" + name)

Pour y accéder dans popup_page.aspx

string sID = Request.QueryString("id");
string sName = Request.QueryString("name");

Mise à jour: si vous utilisez IE, cela pourrait vous aider.

function ShowPopup(strMessage) 
{   
   var returnValue= window.showModalDialog("popup_page.aspx");

}

Popup_page.aspx

<asp:Button ID="btnReturnValue" runat="server" Text="Proceed" OnClientClick="window.returnValue='some message';window.close();" />

Remarque: veuillez noter que cela ne fonctionne que dans IE , je suggère donc d'envisager d'utiliser les éléments suivants à la place:

jQuery

AjaxControlToolkit ModalPopup

Je suggère personnellement l'utilisation de jQuery. :)

1
Alvin 10 nov. 2011 à 02:10

Merci pour toutes les réponses, commentaires. taux et rétroaction. Tout à l'heure, j'ai trouvé un lien très utile ici. Fondamentalement, la réponse est basée sur ce code particulier. J'ai juste besoin de modifier une partie.

<script language="javascript">

function GetRowValue(val)
{
    window.opener.document.getElementById("ctl00_ContentPlaceHolder1_TextBox2").value = val;
   // make sure you change the TextBoxId as respective to your creation 
    window.close();
}

</script>

<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1">
<Columns>
<!-- Reserve the code below, as after you configure data source you -->
<!-- will alter this code drastically therefore-->
<!--you have to make sure to paste this code --> 
<!-- again inside this Gridview element once you configure your data source -->
    <asp:TemplateField>
        <AlternatingItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </AlternatingItemTemplate>
        <ItemTemplate>
            <asp:Button ID="btnSelect" runat="server" Text="Select" />
        </ItemTemplate>
    </asp:TemplateField>
<!-- This part must be reserved -->
</Columns>

N'oubliez pas non plus de spécifier la chaîne de connexion et la commande sql dans la source de données.

Les autres suivent simplement ce tutoriel et copient collez le code entièrement.

0
rofans91 10 nov. 2011 à 04:51

"1. En raison de la nature sans état de HTTP, je ne peux pas traiter et transmettre des variables entre 2 fenêtres différentes."

Vous avez très tort de commencer par ce commentaire, en essayant MSDN et ASP.Net "Comment passer des valeurs entre les pages Web ASP.Net". Passer entre Windows ne nécessite qu'un peu plus de réflexion et peut-être un peu de Javascript pour rafraîchir une fenêtre parent ou provoquer une publication sur une fenêtre shild, etc.

1
Lloyd 9 nov. 2011 à 06:48