2013-08-14 3 views
2

Вот мой ASPX код:Получить значение DropDownList в asp.net событий RowUpdating

<EditItemTemplate> 
    <asp:DropDownList ID="ddlTotalColumn" runat="server"> 
     <asp:ListItem Value="">Select value</asp:ListItem> 
     <asp:ListItem Value="0">1</asp:ListItem> 
     <asp:ListItem Value="1">2</asp:ListItem> 
    </asp:DropDownList> 
</EditItemTemplate> 

Мой aspx.cs код:

protected void gvTest_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow selected_row = gvTest.Rows[e.RowIndex]; 

    var total_column_drop_down_list = (DropDownList)selected_row.FindControl("ddlTotalColumn"); 

    int column_string = Convert.ToInt32(total_column_drop_down_list.SelectedItem.Value); 

    gvTest.EditIndex = -1; 
    ... 
} 

В этой строке: Int column_string = Convert.ToInt32 (total_column_drop_down_list .SelectedItem.Value); У меня есть ошибка: «Входная строка была в некотором формате», потому что «total_column_drop_down_list.SelectedItem.Value» вернет пустую строку («»).

Итак, есть ли яркая идея?

+0

Обратите внимание, что я вызываю событие обновления после выбора значения 1 или 2 в DropdownList –

ответ

4

Похоже, вы сделали классическую ошибку, не поместив свой код привязки данных в блок if (!Page.IsPostBack). Таким образом, ваш GridView повторно связывается, и вы получаете значения по умолчанию в своем событии RowUpdating (а не в том, что вы выбрали).

Где бы вы сшиваться GridView, в Page_Load, например, вам нужно сделать, это:

if (!Page.IsPostBack) 
{ 
    BindGrid(); 
} 

Где «BindGrid()» является то, что код, который вы звоните в ваш GridView привязка.


На слегка несвязанной ноте, вы можете использовать GridViewUpdateEventArgs параметр, который передается в этот метод, чтобы захватить обновленные значения (а не с помощью FindControl получить DropDownList, а затем получить значения).

+0

У вас есть фрагмент кода для этого? Я пытаюсь решить эту точную проблему. – htm11h

+0

@ htm11h Фрагмент кода для чего? Получить значения из объекта GridViewUpdateEventArgs? – jadarnel27

+0

Проверьте документы, @ htm11h. В нижней части коллекции .NewValues ​​есть хороший пример, чтобы получить то, что вам нужно: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewupdateeventargs(v=vs.110) .aspx – jadarnel27

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