2011-04-30 56 views
0

我是第一個使用asp.net和c#的實踐項目的新手;我需要在「添加產品」頁面上顯示輸入表單,並將用戶信息發送到數據庫,然後在按鈕上單擊回發並以只讀格式顯示數據。我想爲此使用ajax,並且我認爲最好爲每個產品使用更新面板,並且在buttonclick上,我將使用switch case語句來顯示相應的表單。我從來沒有使用開關櫃,我想知道我可以用什麼方法來顯示窗體。例如,下拉列表中的Ajax控件顯示用戶輸入表單?

Switch (DropDownList1.SelectedValue) 
    { 
     case 0: 
     //what method would display the update panel for this product? 
     break; 
     case 1: 
     //etc. 
     default: 
     error message; 
     break; 
     } 
+0

你能澄清你想要做什麼嗎?使用AJAX的目的是爲了避免整個頁面的回傳,所以我不確定如何適合你提到的「buttonclick回發」。 在一個側面說明 - 我傾向於嘗試遠離.net UpdatePanel,因爲它使實際呈現的輸出,因此在頁面messier中發生了什麼,並且更難以理解。當被調用時,將jquery和ajax集成起來,你會很高興你做到了。 – Sean 2011-04-30 00:47:00

+0

更新面板隱藏了AJAX的大部分細節,並且仍然執行「回發」,它只是更新面板攔截它們並將它們變爲異步調用。 – 2011-04-30 00:49:35

+0

@Sean,爲了清晰起見,我編輯了我的問題。不幸的是,我完全不知道如何在這種情況下整合jquery和ajax,所以雖然我相信這是一種更乾淨的方式,但我必須堅持我所知道的。 (除非你願意花你的星期五晚上的部分時間向我展示如何做到這一點:D)。 – 2011-04-30 01:22:14

回答

0

這裏是我最終使用。我將這些表單放置在面板中,將它們設置爲不可見,然後對ddl中選定的值運行visible = true方法,然後在ddl事件中運行remove.selecteditem方法以避免產生多餘的產品。

protected void BtnAddProduct_Click(object sender, EventArgs e) 
{ 
    switch (DdlProductList.SelectedValue) 
    { 
     case "1": 
      PanelEpl.Visible = true; 
      break; 
     case "2": 
      PanelProf.Visible = true; 
      break; 
     case "3": 
      PanelCrime.Visible = true; 
      break; 
     case "4": 
      PanelFid.Visible = true; 
      break; 
     case "5": 
      PanelNotProf.Visible = true; 
      break; 
     case "6": 
      PanelPriv.Visible = true; 
      break; 
     case "7": 
      PanelPub.Visible = true; 
      break; 
     default: 

      break; 
    } 
} 

protected void DdlProductList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DdlProductList.Items.Remove(DdlProductList.SelectedItem); 
} 
2

一個解決方案是您不使用回發,然後通過JavaScript調用Web方法,並將您的數據發送到數據庫。

,我會在使用的過程是:

  1. 來把輸入標籤和HTML按鈕的頁面。
  2. 在新的Web服務中創建Web方法。
  3. 創建一個javascript方法來調用這個web方法 a。 b。使用腳本管理器標記和服務引用到您的web服務 b。或使用jQuery AJAX調用Web服務
  4. 修改JavaScript使窗體只讀
  5. 領帶的按鈕javascript函數的onclick