2017-02-08 2 views
0

Таким образом, у меня есть выпадающий список в GridView следующим образом:Мой список Выпадающее Выбранный индекс изменился Isnt работает

<asp:GridView runat="server" ID="gvPrevActionPlans" CssClass="table table-striped table-hover" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundField DataField="REC_ID" HeaderText="Record ID" /> 
     <asp:BoundField DataField="ACTIONPLAN" HeaderText="Action Plan" /> 
     <asp:BoundField DataField="REQDATE" HeaderText="Target Date" /> 

     <asp:TemplateField HeaderText="Progress"> 
      <ItemTemplate> 
       <asp:DropDownList ID="ddAPUpdate" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddAPUpdate_OnSelectedIndexChanged"> 
        <asp:ListItem>In Progress</asp:ListItem> 
        <asp:ListItem>Deadline Not Met</asp:ListItem> 
        <asp:ListItem>Completed</asp:ListItem> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 

    </Columns> 
</asp:GridView> 

C#, если вам интересно:

protected void ddAPUpdate_OnSelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (IsPostBack) return; 
     if (gvPrevActionPlans.Rows.Count == 0) return; 
     for (var i = 0; i < gvPrevActionPlans.Rows.Count; i++) 
     { 
      var ddStatus = (DropDownList)gvPrevActionPlans.Rows[i].FindControl("ddAPUpdate"); 
      var constr = ConfigurationManager.ConnectionStrings["DATABASENAMEHERE(kept out for security reasons)"].ConnectionString; 
      using (var con = new SqlConnection(constr)) 
      { 
       try 
       { 
        var cmd = 
         new SqlCommand(
          "SqlQueryHere") 
         { 
          CommandType = CommandType.Text, 
          Connection = con 
         }; 


        //Parameters added Here 


        con.Open(); 
        if (ddStatus.SelectedItem.ToString() != "In Progress") 
        { 
         cmd.ExecuteNonQuery(); 
        } 
       } 
       catch (SqlException ex) 
       { 
        string errorMsg = "Error in Insert"; 
        errorMsg += ex.Message; 
        throw new Exception(errorMsg); 
       } 
       finally 
       { 
        con.Close(); 
       } 


      } 
     } 
    } 

Ive пытались добавить AutoPostback = true и EnabledViewState = true тоже, когда я поставил точку останова на обработчике событий, он никогда не прерывается, поэтому я предполагаю, что выпадающий список фактически не вызывает событие, но не подсказывает, почему? любая помощь будет оценена по достоинству.

+0

Пожалуйста, поделитесь своим событием загрузки страницы – Prabhat

ответ

0

Возможно, вы не привязали привязку данных GridView к IsPostBack. Если вы этого не сделали, то все DropDowns вернутся к умолчанию по умолчанию при каждой загрузке страницы, а SelectedIndexChanged не будет запущен.

if (!IsPostBack) 
{ 
    gvPrevActionPlans.DataSource = source; 
    gvPrevActionPlans.DataBind(); 
} 

Вы все еще будет нужно добавить AutoPostBack="true" и OnSelectedIndexChanged="ddAPUpdate_SelectedIndexChanged" к DropDown.

UPDATE

И эта линия будет вызывать метод никогда не продолжать выполнение, так как она всегда является PostBack. Это всегда будет верно и поэтому всегда возвращается в первую строку.

if (IsPostBack) return; 

Тест самих

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (IsPostBack) return; 

    //the label will never change since a button click is a PostBack and immediately returned 
    Label1.Text = "This is a test"; 
} 
+0

Я уже добавил предшественник, они Арент там в данный момент, потому что техник его подводит исправить (и Я попытался использовать кнопку, чтобы заставить изменения, но ddl все еще не изменил их значения. –

+0

Обновленный мой ответ, ваш метод не будет завершен, как сейчас. – VDWWD

+0

Я не пытаюсь получить данные, я делаю обновление базы данных на основе того, что выпадающие списки это значение, и я уже делаю то, что вы предлагаете, 'if (IsPostBack) re turn; 'и' if (! IsPostBack) '- то же самое –

0

Попробуйте добавить событие и AutoPostBack (опять же) на разметке:

<asp:DropDownList ID="ddAPUpdate" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddAPUpdate_OnSelectedIndexChanged"> 

Надеется, что это помогает!

+0

Я уже пробовал это, и он ничего не исправить –

0

попробовать код из этой ссылки в ваших dropdownselectedindexchanged случае

fetch dropdownlist from gridview

+0

Моя проблема не извлекает данные из gridview. Это то, что мой обработчик событий не запускается, например, первая строка C# даже не запускается на нем –

Смежные вопросы