本帖最后由 silence1203 于 2011-02-17 16:59:17 编辑

解决方案 »

  1.   

    动态模版列使用ITemplate

    protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
    {
    gv.EditIndex = e.NewEditIndex;
    BindData();
    }
    protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
    gv.EditIndex = e.RowIndex;
    int id = int.Parse(gv.DataKeys(e.RowIndex).Value.ToString());
    string str = ((DropDownList)gv.Rows(e.RowIndex).FindControl("ddl")).SelectedValue.Trim();
    }
      

  2.   

    替换原理 
    前台<Columns>
                    <asp:BoundField DataField="RoomsName" HeaderText="房间名称" 
                        SortExpression="RoomsName" ReadOnly="true" />
                    <asp:TemplateField HeaderText="1号">
                        <ItemTemplate>
                            <%# Eval("num1")%></ItemTemplate> 
                        <EditItemTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="AccessDataSource"
                                DataTextField="id" DataValueField="id">
                            </asp:DropDownList>
                            
                        </EditItemTemplate>
                    </asp:TemplateField>
    <asp:AccessDataSource ID="AccessDataSource" runat="server" DataFile="~/App_Data/3YQ.mdb"
                                SelectCommand="SELECT distinct [id] FROM [ttue]"> //替换查询出的字段
                                </asp:AccessDataSource>
                </Columns>
    后台
    前提 以绑定数据
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //num1
            if((e.Row.RowState == DataControlRowState.Edit) || (e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)))
            {
                System.Data.DataRowView drv = (System.Data.DataRowView)e.Row.DataItem;
                DropDownList ddl =  (DropDownList)e.Row.Cells[3].FindControl("DropDownList1");
                ListItem li = ddl.Items.FindByText(drv["num1"].ToString());
                li.Selected = true;
            }
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow gvr = this.GridView1.Rows[this.GridView1.EditIndex];
            //num1
            DropDownList ddl = (DropDownList)gvr.Cells[3].FindControl("DropDownList1");
            e.NewValues["num1"] = ddl.SelectedValue;
    }