我有一个非常奇怪的问题,当我尝试检查其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();
}
}
}
答案 0 :(得分:0)
你可以尝试两件事。尝试将数据绑定代码放在PreRender事件中。第二个也是更好的选择是使用ObjectDataSource控件并以声明方式绑定控件。