【问题标题】:Dropdown list in grid view: can't get selected value网格视图中的下拉列表:无法获取所选值
【发布时间】:2015-02-15 10:35:18
【问题描述】:

在某一时刻,我能够从我的网格视图中的静态 DDL 中进行选择,然后根据我所做的选择更新网格视图。在某些时候,它停止了工作,我无法恢复它。

下面是(简化的)代码,除了从 DDL 中获取选定的值 - 它总是返回第一个列表项。知道我哪里出错了吗?

  protected void gv_Pending_RowDataBound(object sender, GridViewRowEventArgs e)
        { 
            if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
            {
                ((DropDownList)e.Row.FindControl("ddl_Pending")).Enabled = true;        
            }

        }

    protected void gv_Pending_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int index = Convert.ToInt32(e.RowIndex);
            GridViewRow row = gv_Pending.Rows[index];

            string adm_appr = ((DropDownList)row.FindControl("ddl_Pending")).SelectedValue.ToString();
        }

    <asp:GridView ID="gv_Pending" runat="server" 
        OnRowDataBound="gv_Pending_RowDataBound" OnRowUpdating="gv_Pending_RowUpdating" OnRowEditing="gv_Pending_RowEditing" 
        OnRowCancelingEdit="gv_Pending_RowCancelingEdit" OnRowCommand="gv_Pending_RowCommand" 
        ClientIDMode="Static" >
        <Columns>
            <asp:CommandField ShowCancelButton="true" ShowEditButton="true" />
            <asp:TemplateField HeaderText="Approval" Visible="true">
                <ItemTemplate>
                    <asp:DropDownList ID="ddl_Pending" runat="server" OnSelectedIndexChanged="ddlPending_SelectedIndexChanged"
                        Enabled="false" >
                        <asp:ListItem >Select One</asp:ListItem>
                        <asp:ListItem >Standard Privilege</asp:ListItem>
                        <asp:ListItem >Admin Privilege</asp:ListItem>
                        <asp:ListItem >Deny Request</asp:ListItem>
                        <asp:ListItem >Remove Account</asp:ListItem>
                    </asp:DropDownList>
               </ItemTemplate>
          </asp:TemplateField>
          <asp:BoundField HeaderText="Field 1" DataField="Field 1 data" ReadOnly="true" />
          <asp:BoundField HeaderText="Field 2" DataField="Field 2 data" ReadOnly="true" />
        </Columns>
    </asp:GridView>

【问题讨论】:

    标签: c# gridview drop-down-menu


    【解决方案1】:

    对于可能追随我的其他人来说,这是一个加载顺序问题。

    特别是,我在 page_load 上调用了网格视图加载事件,回发。这会重置 DDL,并且自然会清除在行更新事件期间所做的选择。通过从 page_load 中删除网格视图加载事件调用,在行更新事件期间所做的 DDL 选择按预期保留。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2023-03-25
      相关资源
      最近更新 更多