【问题标题】:set the selected value of DropDownList in a GridView在 GridView 中设置 DropDownList 的选定值
【发布时间】:2021-10-30 07:37:18
【问题描述】:

我有一个可编辑的 Gridview。我希望当我将 gridview 置于编辑模式时,设置 gridview 的选定值。

gridview 中的模板字段。

 <asp:TemplateField HeaderText="Status">
                    <ItemTemplate>  
                        <%#Eval("Status")%>
                    </ItemTemplate>  
                    <EditItemTemplate>  
                        <asp:DropDownList runat="server" ID="ddStatusList" AppendDataBoundItems="True" CssClass="form-control">

                        </asp:DropDownList>
                    </EditItemTemplate>  
                </asp:TemplateField> 

行数据绑定事件

protected void grdPresenters_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if ((e.Row.RowState & DataControlRowState.Edit) > 0)
            {
                DropDownList ddList = (DropDownList)e.Row.FindControl("ddStatusList");
                DataTable dt = new DataTable();
                dt.Columns.Add("Status", typeof(string));
                DataRow row1 = dt.NewRow();
                row1["Status"] = "Pending";
                dt.Rows.Add(row1);
                DataRow row2 = dt.NewRow();
                row2["Status"] = "Approved";
                dt.Rows.Add(row2);
                DataRow row3 = dt.NewRow();
                row3["Status"] = "Rejected";
                dt.Rows.Add(row3);
                ddList.DataSource = dt;
                ddList.DataTextField = "Status";
                ddList.DataValueField = "Status";
                ddList.DataBind();

                DataRowView rowView = e.Row.DataItem as DataRowView;
                    String status = rowView["Status"].ToString();
                    ddList.SelectedValue = rowView["Status"].ToString();
               
            }
        }
    }

不幸的是 rowView 始终为 null,即使在非编辑模式下我可以看到状态为已批准。

【问题讨论】:

  • 代码看起来正确。正如@Greg 所说,它可能是rowView。如果您忽略该部分并将ddList.SelectedValue 设置为固定的测试字符串会发生什么。如果您将 List&lt;T&gt; 绑定到 GridView,则该行的演员表应该是这样的:var rowView = e.Row.DataItem as MyCustomClass;

标签: c# asp.net gridview webforms


【解决方案1】:

您可以尝试将 Status 的值放入编辑模板中的 HiddenField 中,然后使用 e.Row.FindControl 获取 HiddenField 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-14
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多