2010-07-20 77 views
0

我有一個很奇怪的問題,其中SelectionList總是返回NULL,當我嘗試檢查其選定的項目/值。我谷歌了一下,我發現,當我點擊提交按鈕,頁面正在刷新和SelectionList正在數據綁定再次,所以它會恢復到其原來的行爲。SelectionList總是返回NULL

然後我試着在Page_Load事件!IsPostBack附上綁定代碼,但仍然當我嘗試訪問Selected屬性它爲空,並引發異常。

任何幫助將不勝感激。

我的代碼是這樣的......(括號不正確匹配)

static SelectionList[] Symptoms; 
static string UserID = ""; 

cmbSymptoms1,cmbSymptoms2,cmbSymptoms3和cmbSymptoms4是SelectionLists。我將它們放入一個SelectionList的數組中,然後設置屬性。

我不得不讓它們變成靜態的,否則當我點擊按鈕來更新時,它們不會保留它們的值。任何想法爲什麼他們不保留這些值?

protected void Page_Load(object sender, EventArgs e) 
{ 

if (this.IsPostBack == false) 
     { 
      //System.Diagnostics.Debug.WriteLine("Not IsPostBack"); 

      if (Request.QueryString["id"] != null && Request.QueryString.ToString() != "") 
      { 
       //System.Diagnostics.Debug.WriteLine("id query string is not null :- " + Request.QueryString["id"]); 

       myclass = new Class1(); 

       UserID = Request.QueryString["id"]; 

       Symptoms = new SelectionList[4]; 

       Symptoms[0] = cmbSymptoms1; 
       Symptoms[1] = cmbSymptoms2; 
       Symptoms[2] = cmbSymptoms3; 
       Symptoms[3] = cmbSymptoms4; 

       System.Data.DataTable dt = myclass.getAllSymptoms(); 

       foreach (SelectionList listItem in Symptoms) 
       { 
        listItem.DataSource = dt; 
        listItem.DataTextField = "symptomsname"; 
        listItem.DataValueField = "symptomsid"; 
        listItem.DataBind(); 
        listItem.Items.Insert(0, new MobileListItem("None")); 
       } 

而且在更新按鈕單擊事件 保護無效cmbUpdate_Click(對象發件人,EventArgs的){

foreach (SelectionList listItem in Symptoms) 
     { 
      if (listItem.SelectedIndex != 0) 
      { 
       cmd.CommandText = "INSERT INTO Patient_Symptom (patientid,symptomid) VALUES (" + UserID + ",'" + listItem.Selection.Value + "')"; 
       cmd.ExecuteNonQuery(); 
      } 

     } 

}

回答

0

您可以嘗試兩件事情。嘗試將數據綁定代碼放在PreRender事件中。第二個也是更好的選擇是使用ObjectDataSource控件並以聲明方式綁定控件。

+0

如果我把代碼放在預渲染中,它總是會發生,不管它是否是一個回發權? – 2010-07-20 22:48:07

+0

不,您也可以在PreRender中執行相同的IsPostBack檢查。 PreRender事件在Load之後的頁面生命週期中進一步發生,但您仍然可以檢查IsPostBack屬性。 – drohm 2010-07-21 00:18:49