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显示成样品呢?

解决方案 »

  1.   

    http://www.soaspx.com/dotnet/asp.net/Control/control_20091123_1732.html
    这个应该对你有帮助
    不要用RowDataBound来绑定数据,写到html里
      

  2.   

    EditTemplate>   
    <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;}
    }