c#
  • asp.net
  • 2013-11-21 72 views 0 likes 
    0

    我有一個GridView,我已經將它放在DropDownList的2列中。ASP.NET在代碼隱藏的EditItemTemplate中從DropDownList獲取值

    <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中獲取物品?

    OnUpdating事件 - 我沒有辦法拉行以從下拉列表中獲取值,但我在這裏添加了我的sql參數。

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

    RowUpdating事件 - 我可以在這裏得到了行,但因爲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

    哈哈,所以第一我抓住了錯誤的下拉列表,第二,我如何從代碼隱藏的ddlUpgrade中獲取物品? – Tsukasa

    回答

    3

    在RowUpdating事件,你可以我無法將值添加到SQL參數根據其編號捕獲編輯模板內的控件。

    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沒有測試代碼。你可能需要調整。

    相關問題