gridview里的dropdownlist是个模板列,每次打开页面时用RowDataBound给dropdownlist绑定数据<asp:TemplateField HeaderText="订货途径">
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" >
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
if (!IsPostBack)里绑定数据 sqloldArrival.Connection = srcConnection;
sqloldArrival.CommandText = "select DHWays 订货途径 from xxx Where SheetID='" + sheetid + "' ";
sqloldArrival.CommandType = CommandType.Text;
daoldArrival.SelectCommand = sqloldArrival;
daoldArrival.Fill(dtoldArrival);
GvArrivalDetail.DataSource = dtoldArrival;
GvArrivalDetail.DataBind();
for (int i = 0; i < GvArrivalDetail.Rows.Count; i++)
{
DropDownList ddl = (DropDownList)GvArrivalDetail.Rows[i].Cells[10].FindControl("DropDownList1");
ddl.Enabled = false;//将ddl的状态设为禁用
}
RowDataBound: if (((DropDownList)e.Row.FindControl("DropDownList1")) != null)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
ddl.Items.Clear();
ddl.Items.Insert(0, new ListItem("画册", "0"));
ddl.Items.Insert(1, new ListItem("样品", "1"));
ddl.Items.Insert(2, new ListItem("其他", "2"));
}
这样做,每次打开页面时,因为RowDataBound的关系,dropdownlist都会被重建,如果我将这个ddl从“画册”改为“样品”,点更新后因为RowDataBound的关系,dropdownlist还是会被重建,显示的还是画册而不是我改动的样品。
请问这个要怎么改呢?
另外,如果某一行是“样品”,在打开页面时如何让这一行的ddl显示成样品呢?
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" >
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
if (!IsPostBack)里绑定数据 sqloldArrival.Connection = srcConnection;
sqloldArrival.CommandText = "select DHWays 订货途径 from xxx Where SheetID='" + sheetid + "' ";
sqloldArrival.CommandType = CommandType.Text;
daoldArrival.SelectCommand = sqloldArrival;
daoldArrival.Fill(dtoldArrival);
GvArrivalDetail.DataSource = dtoldArrival;
GvArrivalDetail.DataBind();
for (int i = 0; i < GvArrivalDetail.Rows.Count; i++)
{
DropDownList ddl = (DropDownList)GvArrivalDetail.Rows[i].Cells[10].FindControl("DropDownList1");
ddl.Enabled = false;//将ddl的状态设为禁用
}
RowDataBound: if (((DropDownList)e.Row.FindControl("DropDownList1")) != null)
{
DropDownList ddl = (DropDownList)e.Row.FindControl("DropDownList1");
ddl.Items.Clear();
ddl.Items.Insert(0, new ListItem("画册", "0"));
ddl.Items.Insert(1, new ListItem("样品", "1"));
ddl.Items.Insert(2, new ListItem("其他", "2"));
}
这样做,每次打开页面时,因为RowDataBound的关系,dropdownlist都会被重建,如果我将这个ddl从“画册”改为“样品”,点更新后因为RowDataBound的关系,dropdownlist还是会被重建,显示的还是画册而不是我改动的样品。
请问这个要怎么改呢?
另外,如果某一行是“样品”,在打开页面时如何让这一行的ddl显示成样品呢?
这个应该对你有帮助
不要用RowDataBound来绑定数据,写到html里
<asp:DropDownList ID="ddl" runat="server" Width="98%">
</asp:DropDownList>
<asp:HiddenField ID="Hd_Sort" runat="server" Value='<%# Eval("Sort")%>' />
</EditTemplate>protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex != -1) {
if (e.Row.RowState == DataControlRowState.Edit || Convert.ToInt32(e.Row.RowState & DataControlRowState.Edit) != 0) {
DropDownList ddl = e.Row.FindControl("ddl") as DropDownList;
ddl.SelectedValue = ((HiddenField)e.Row.FindControl("Hf")).Value;}
}