2016-03-03 3 views
2

я извлечения данных из таблицы Technology в DropDownList ddlTechnology.SelectedIndex всегда 0 в DropDownList (asp.net C#)

У меня есть TechnologyId в качестве первичного ключа в таблице и значения 1,2,3,4

Теперь по технологии, я должен добавить вопросы в вопросе банка. но когда я выбрать любой элемент в DropDownList, мой SelectedIndex всегда 0.

я хочу TechnologyId из DropDownList.

я попытался следующий код, но он не работает

using (dbDataContext dt = new dbDataContext()) 
     { 
      var qry = from i in dt.Technologies 
         select i; 

      ddlTechnology.DataSource = qry; 
      ddlTechnology.DataValueField = "TechnologyId"; 
      ddlTechnology.DataTextField = "TechnologyName"; 
      ddlTechnology.DataBind(); 
      ddlTechnology.Items.Insert(0, new ListItem("Select Technology", "")); 
     } 

кнопку Добавить, чтобы добавить вопрос в соответствии с выбранной технологией.

protected void btnAdd_Click(object sender, EventArgs e) 
{ 
    using (dbDataContext dt = new dbDataContext()) 
    { 
     Question objQtn = new Question(); 
     objQtn.Question1 = txtQuestion.Text; 
     objQtn.Option1 = txtOption1.Text; 
     objQtn.Option2 = txtOption2.Text; 
     objQtn.Option3 = txtOption3.Text; 
     objQtn.Answer = txtAnswer.Text; 
     // below here selectedIndex is always zero.. 
     objQtn.TechnologyId = ddlTechnology.SelectedIndex; 
     dt.Questions.InsertOnSubmit(objQtn); 
     dt.SubmitChanges(); 
     txtAnswer.Text = ""; 
     txtOption1.Text = ""; 
     txtOption2.Text = ""; 
     txtOption3.Text = ""; 
     txtQuestion.Text = ""; 
    } 
} 
+0

Вставить вашу загрузку страницы, пожалуйста, – Imad

+0

Попробуйте использовать SelectedValue вместо ... – Pikoh

+0

первого кода в Page_Load –

ответ

5

оснований1:

Похоже, вы являются обязательными для DropDownList на каждом постбэка. Если это проблема, то сохраните свой код загрузки! IsPostBack shou work.

if(!IsPostBack) 
{ 
    using (dbDataContext dt = new dbDataContext()) 
     { 
      var qry = from i in dt.Technologies 
         select i; 

      ddlTechnology.DataSource = qry; 
      ddlTechnology.DataValueField = "TechnologyId"; 
      ddlTechnology.DataTextField = "TechnologyName"; 
      ddlTechnology.DataBind(); 
      ddlTechnology.Items.Insert(0, new ListItem("Select Technology", "")); 
     } 
} 

Причина 2

В некоторых случаях, если пользователь отключает ViewState свойства любого элемента управления, то и контроль теряет это значение на постбэк.

0

Пожалуйста, найдите код для справки. надеюсь, что это вам поможет: (objQtn.TechnologyId = ddlTechnology.SelectedIndex;) один из этих двух типов проверяет тип строки один раз.

index.aspx

<asp:DropDownList ID="ddlCloth" runat="server"></asp:DropDownList> 
    <asp:Button runat="server" ID="btnSave" OnClick="btnSave_Click" /> 

Index.aspx.cs

  protected void Page_Load(object sender, EventArgs e) 
     { 
     if (!Page.IsPostBack) 
     { 


      DataTable dt1 = new DataTable(); 
      dt1.Columns.AddRange(new DataColumn[2] { new DataColumn("Id"), new DataColumn("Name") }); 
      dt1.Rows.Add(1, "Shirt"); 
      dt1.Rows.Add(2, "Jeans"); 

      ddlCloth.DataSource = dt1; 
      ddlCloth.DataTextField = "Name"; 
      ddlCloth.DataValueField = "Id"; 
      ddlCloth.DataBind(); 
     } 


    protected void btnSave_Click(object sender, EventArgs e) 
    { 


     int id = Convert.ToInt32(ddlCloth.SelectedItem.Value); 
     string text = Convert.ToString(ddlCloth.SelectedItem.Text); 
     int index=Convert.ToInt32(ddlCloth.SelectedIndex); 
    } 
0

нужно связать выпадающий список в поле ниже события.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
    // Bind your dropdown list 
    } 
} 
Смежные вопросы