在 GridView 中设置 DropDownList 的选定值
set the selected value of DropDownList in a 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>
rowdatabound 事件
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,即使在非编辑模式下我可以看到已批准的状态。
您可以尝试将 Status 的值放入编辑模板中的 HiddenField 中,然后使用 e.Row.FindControl 获取 HiddenField 值。
我有一个可编辑的 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>
rowdatabound 事件
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,即使在非编辑模式下我可以看到已批准的状态。
您可以尝试将 Status 的值放入编辑模板中的 HiddenField 中,然后使用 e.Row.FindControl 获取 HiddenField 值。