SelectionList始终返回NULL

时间:2010-07-20 22:22:58

标签: c# asp.net mobile null

我有一个非常奇怪的问题,当我尝试检查其Selected Item / Value时,SelectionList总是返回NULL。我用Google搜索了一下,我发现当我单击提交按钮时,页面正在刷新,并且SelectionList再次被数据绑定,因此它将恢复到其原始行为。

然后我尝试在Page_Load中的!IsPostBack事件中包含绑定代码,但是当我尝试访问Selected属性时,它仍为null并抛出异常。

非常感谢任何帮助。

我的代码是这样的......(大括号不匹配)

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

在更新按钮单击事件中 protected void cmbUpdate_Click(object sender,EventArgs e)     {

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

        }   

}

1 个答案:

答案 0 :(得分:0)

你可以尝试两件事。尝试将数据绑定代码放在PreRender事件中。第二个也是更好的选择是使用ObjectDataSource控件并以声明方式绑定控件。