У меня очень странная проблема, когда SelectionList всегда возвращает NULL, когда я пытаюсь проверить выбранный элемент / значение.Я немного погуглил и обнаружил, что когда я нажимаю кнопку отправки, страница обновляется, и SelectionList снова привязывается к данным, поэтому он возвращается к своему первоначальному поведению.
Затем я попытался заключить код привязки в событие Page_Load
в !IsPostBack
, но все же, когда я пытаюсь получить доступ к свойству Selected, оно имеет значение null и выдается исключение.
AnyСправка будет принята с благодарностью.
Мой код выглядит примерно так ... (фигурные скобки не совпадают должным образом)
static SelectionList[] Symptoms;
static string UserID = "";
cmbSymptoms1, cmbSymptoms2, cmbSymptoms3 и cmbSymptoms4 являются списками выбора.Я взял их в массив 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"));
}
А в кнопке обновления щелчок по событию защищен void cmbUpdate_Click (отправитель объекта, 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();
}
}
}