2011-03-28 51 views
1

我有一個對話框(模態),我將在其中註冊一個(或多個)聯繫人。在回發之前在gridview中保存臨時信息

聯繫人進入gridview,在那裏他們可能被編輯或刪除。

Gridview中的數據只能在過程結束時保存在數據庫中。

我該如何做到這一點?

模態代碼

$(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:

  • 我沒有CSHARP或HTML代碼的一個很好的樣本,「因爲我不知道該怎麼做到這一點。我所有的代碼看起來凌亂(atm已經嘗試了很多東西)

  • 我的GridView是一個ascx,模態與ascx相同。

  • 我相信一些臨時表或類似的東西會有所幫助,但我從來沒有做過類似的東西(看起來像一個商店購物車軟件),我甚至不知道如何去尋找它。

謝謝。如果你可以做一些代碼示例,那將是很棒的。

編輯: 我這樣做代碼:

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

我創建一個臨時的GridView,但數據是空的,我想從我的文字的模式把它,但我沒有能力,我不熟悉我將如何從gridview中獲取數據到我的數據庫。 (我相信這是更容易的部分,然後我不專注於此刻)

編輯:我用我的解決方案創建答案。

+0

我會非常小心地將您的列表存儲在ViewState中。它可能是一個真正的表演殺手 - 我多年前犯了這個錯誤。如果您在Page範圍內需要這些值,請將這些值推送到隱藏表單域。否則,數據庫不會花費太多。 – 2011-03-29 13:51:04

+0

感謝Corey =)我明白在Viwestate中保存數據的問題。但作爲現在的項目,現在很難改變它,所以我用很少量的分頁(通過數據庫查詢),等到我的老闆讓我重新制作項目(該項目開始於預先存在重拍oO「)。但是,這是一個偉大的和真實的建議,再次感謝=) – 2011-03-30 18:36:29

回答

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

現在我從我的模態得到的值!現在只需要幾件事情(我相信)。

1-獲取我的數據庫中的數據以首次加載GridView(如果它是一個版本)並加載新的臨時數據。

2-保存新的臨時數據。

DONE:

1 - 我在我的視圖狀態加載並使用它來加載網格。

2-也使用我的viewstate保存我的數據在數據庫中。