我有一個很奇怪的問題,其中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();
}
}
}
如果我把代碼放在預渲染中,它總是會發生,不管它是否是一個回發權? – 2010-07-20 22:48:07
不,您也可以在PreRender中執行相同的IsPostBack檢查。 PreRender事件在Load之後的頁面生命週期中進一步發生,但您仍然可以檢查IsPostBack屬性。 – drohm 2010-07-21 00:18:49