2013-11-21 3 views
0

У меня есть GridView, который я разместил в DropDownList в 2 столбцах.ASP.NET Получить значение из DropDownList в EditItemTemplate в codebehind

<asp:TemplateField HeaderText="Upgrade" SortExpression="Upgrade"> 
       <ItemTemplate> 
        <asp:Label ID="LabelUpgrade" runat="server" Text='<%# Eval("Upgrade") %>' /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:DropDownList ID="ddlUpgrade" runat="server" Width="100px"> 
         <asp:ListItem Value="1">--Select--</asp:ListItem> 
         <asp:ListItem Value="2">1</asp:ListItem> 
         <asp:ListItem Value="3">2</asp:ListItem> 
         <asp:ListItem Value="4">3</asp:ListItem> 
         <asp:ListItem Value="5">4</asp:ListItem> 
         <asp:ListItem Value="6">5</asp:ListItem> 
        </asp:DropDownList> 
       </EditItemTemplate> 
      </asp:TemplateField> 

Как я могу захватить элемент из ddlUpgrade в codebehind?

OnUpdating Event - У меня нет способа вытащить строку, чтобы получить значение из раскрывающегося списка, но здесь я добавляю параметры sql.

protected void IAP_Updating(object sender, SqlDataSourceCommandEventArgs e){} 

RowUpdating Event - я могу получить строку здесь, но я не могу добавить значение к SQL параметров, поскольку e.command не действует здесь

protected void gvClients_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     GridViewRow _row = gvClients.Rows[e.RowIndex]; 

     DropDownList _ddl = (DropDownList)_row.FindControl("ddlUpgrade"); 
     SqlParameter _parm = new SqlParameter("@Upgrade", _ddl.SelectedItem.ToString()); 
    } 
+0

Где ddlNewUpdate? –

+0

HA ok so 1st I'm grabbing the wrong droplistlist, 2nd, как я могу захватить элемент из ddlUpgrade в codebehind? – Tsukasa

ответ

3

На мероприятии RowUpdating вы можете захватить элемент управления внутри шаблона редактирования на основе его идентификатора.

GridViewRow row = GridView1.Rows[e.RowIndex]; 

DropDownList ddl = (DropDownList)row.FindControl("ddlUpgrade"); 

SqlParameter _parm = new SqlParameter("@Upgrade", ddl.SelectedItem.ToString()); 
    e.Command.Parameters.Add(_parm); 
+0

RowUpdating GridViewUpdateEventArgs e не содержит e.Command – Tsukasa

+0

Можете ли вы вставить весь метод OnRowUpdating? –

+0

Событие для OnUpdating имеет только SqlDataSourceCommandEventArgs e, который я не могу вытащить из строки, чтобы найти раскрывающийся список, но это то, где я добавляю свои sqlparameters. Событие RowUpdatining имеет GridViewUpdateEventArgs e, из которого я могу вывести строку, но у нее нет возможности добавлять sqlparameters – Tsukasa

2

Я хотел бы добавить скрытое поле за пределами GridView:

<asp:HiddenField ID="hdnSelection" value="" runat="server" /> 

И изменить метод gvClients_RowUpdating:

protected void gvClients_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow _row = gvClients.Rows[e.RowIndex];   
    DropDownList _ddl = _row.FindControl("ddlUpgrade") as DropDownList; 

    if(_ddl != null) 
    { 
     hdnSelection.Value = _ddl.SelectedItem.Text; 
     IAP.Update();//Assuming IAP is the ID of the SqlDataSource 
    } 

} 

И мой метод IAP_Updating должен выглядеть следующим образом:

protected void IAP_Updating(object sender, SqlDataSourceCommandEventArgs e) 
{ 
    SqlParameter _parm = new SqlParameter("@Upgrade", hdnSelection.Value); 
    e.Command.Parameters.Add(_parm); 
} 

I не тестировал код. Возможно, вам придется настроить.

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