2011-03-28 1 views
1

J'ai un dialogue (modal), où je vais enregistrer un (ou plusieurs) contact.Tenir des informations temporaires dans gridview avant post-retour

le contact va à une vue de grille, où ils peuvent être édités ou supprimés.

Les données de Gridview ne peuvent être enregistrées dans la base de données qu'à la fin du processus.

Comment puis-je y parvenir?

Code Modal

$(function() { 
    $(".ModalBox").dialog({ 
     autoOpen: false, 
     height: 400, 
     resizable: false, 
     draggable: false, 
     width: 602, 
     modal: true, 
     open: function (type, data) { 
      $(this).parent().appendTo($("form:first")); 
     } 
    }); 
}); 

OBS .:

  • Je n'ai pas un bon échantillon de CSharp ou code html, « Parce que je ne sais pas comment atteindre cet. Tout mon code semble désordonné atm (essayant beaucoup de choses déjà)

  • Mon GridView est un ascx, et le modal est dans le même ascx. Je crois qu'il y a une table temporaire, ou quelque chose comme ça, mais je n'ai jamais fait quelque chose comme ça (ressemble à un logiciel de chariot), et je ne sais même pas comment le chercher.

Merci. Si vous pouvez faire un échantillon de code, ce sera génial.

EDIT: je l'ai fait ce code:

Code CSharp:

[Serializable] 
     public class TabelaTempContato 
     { 
      public int IDCliente { get; set; } 
      public string Nome { get; set; } 
      public string Email { get; set; } 
      public string Telefone { get; set; } 
      public string Cpf { get; set; } 
      public string Rg { get; set; } 
      public string Departamento { get; set; } 
      public string Cargo { get; set; } 
     } 

     protected List ListaTabelaTemp 
     { 
      get 
      { 
       if (this.ViewState["TabelaTemp"] == null) 
       { 
        this.ViewState["TabelaTemp"] = new List(); 
       } 

       return (List)this.ViewState["TabelaTemp"]; 
      } 
     } 

     protected void AddItem() 
     { 
      this.ListaTabelaTemp.Add(new TabelaTempContato()); 
      this.gvContato.DataSource = this.ListaTabelaTemp; 
      this.gvContato.DataBind(); 
     } 

     protected void btnTest_Click(object sender, EventArgs e) 
     { 
      this.AddItem(); 
     } 

je crée un gridview temporaire, mais les données est vide, je l'ai essayé tirer de mon texte dans le modal , mais je n'étais pas capable de, je suis je ne suis pas familier dans la façon dont je vais obtenir les données de gridview à ma base de données. (Je crois que c'est la partie la plus facile, alors je ne suis pas concentré sur le moment)

EDIT: Je crée la réponse avec ma solution.

+0

Je ferais très attention à stocker vos listes dans ViewState comme ça. Ce peut être un vrai tueur de performance - j'ai fait cette erreur moi-même il y a plusieurs années. Poussez les valeurs au champ de formulaire caché si vous en avez besoin à la portée de la page. Sinon, une base de données ne vous coûtera pas beaucoup. –

+0

Merci Corey =) je comprends le problème dans enregistrer dans Viwestate les données. mais comme le projet en ce moment, il est assez difficile de le changer en ce moment, donc je pagine (via une requête de base de données) avec une petite quantité et j'attends que mon patron me laisse refaire le projet (le projet commence par refaire oO "). Mais est un grand et réel conseiller, merci encore =) –

Répondre

1

     [Serializable] 
     public struct TempContato 
     { 
      public int IDCliente { get; set; } 
      public string Nome { get; set; } 
      public string Email { get; set; } 
      public string Telefone { get; set; } 
      public string Cpf { get; set; } 
      public string Rg { get; set; } 
      public string Departamento { get; set; } 
      public string Cargo { get; set; } 
     } 

     protected List ListaTabelaTemp 
     { 
      get 
      { 
       if (this.ViewState["ListaTempContato"] == null) 
        this.ViewState["ListaTempContato"] = new List(); 

       return (List)this.ViewState["ListaTempContato"]; 
      } 
     } 

     protected void AddItem() 
     { 
      TempContato tempContato = new TempContato(); 

      //tempContato.IDCliente = Convert.ToInt32(this.txtEmailContato.Text); 
      tempContato.Nome = this.txtNomeContato.Text; 
      tempContato.Email = this.txtEmailContato.Text; 
      tempContato.Telefone = this.txtTelefoneContato.Text; 
      tempContato.Cpf = this.txtCpfContato.Text; 
      tempContato.Rg = this.txtRgContato.Text; 
      tempContato.Departamento = this.ddlDepartamentoContato.SelectedValue; 
      tempContato.Cargo = this.ddlCargoContato.SelectedValue; 

      this.ListaTabelaTemp.Add(tempContato); 
     } 

     protected void AtualizarGrid() 
     { 
      this.gvContato.DataSource = this.ListaTabelaTemp; 
      this.gvContato.DataBind(); 
     } 

     protected void btnTest_Click(object sender, EventArgs e) 
     { 
      this.AddItem(); 
      this.AtualizarGrid(); 
     } 

Maintenant, je reçois les valeurs de mon modal! Juste besoin de quelques choses maintenant (je crois).

1- Récupère les données dans ma base de données pour charger le GridView pour la première fois (s'il s'agit d'une édition), et charge avec les nouvelles données temporaires.

2- Enregistrer les nouvelles données temporaires.

disgnostic

1- i charge dans mon état d'affichage et l'utiliser pour charger la grille.

2- en utilisant également mon viewstate pour enregistrer mes données, dans la base de données.

Questions connexes