前台代码以一个模版列为例
<asp:TemplateField HeaderText="学历">
<ItemTemplate>
<%# Eval("description")%>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="HDFXueli" runat="server" Value='<%# Eval("xueli") %>' />
<asp:DropDownList ID="DDLXueli" runat="server" Width="90px" />
</EditItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
显示列为
<ItemTemplate>
<%# Eval("description")%>
</ItemTemplate>
其中<%# Eval("description")%>为绑定字段
编辑列为
<EditItemTemplate>
<asp:HiddenField ID="HDFXueli" runat="server" Value='<%# Eval("xueli") %>' />
<asp:DropDownList ID="DDLXueli" runat="server" Width="90px" />
</EditItemTemplate>
即列如果为编辑状态的话则执行这段代码
其中有一个隐藏列其目的是当该行为编辑状态时dropdownlist此时的初始值是显示列的值,所以隐藏列储存的作用,在gridview绑定数据是hiddenfied会绑定上与显示列中相同的值以便在编辑时将此值传给dropdownlist控件中。
怎样为dropdownlist绑定数据
首先在绑定数据之前应做如下判定
if(e.Row.RowType==DtaConctrolRowType.Datarow&&e.Row.Dataset==DatacontrolRowSet.Edit)
e.Row.RowType==DtaConctrolRowType.Datarow是此行为编辑行
e.Row.RowSet==DataControlSowsSet.Edit是此行为编辑状态
然后在此判断语句中写如下代码:
DropDownList ddlxueli = (DropDownList)e.Row.FindControl("DDLXueli"); //找到此控件
string connStr = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;//获取连接字符串
string SqlStr = "SELECT * from xueli"; // 获取sql语句
DataSet ds = new DataSet(); //获得缓存
SqlConnection conn = new SqlConnection(connStr);
if (conn.State.ToString() == "Closed") conn.Open();
SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);
da.Fill(ds, "xueli"); //将数据填入缓存
if (conn.State.ToString() == "Open") conn.Close();
ddlxueli.DataSource = ds.Tables[0].DefaultView; //为该控件提供数据源
ddlxueli.DataTextField = "description"; 设置字段
ddlxueli.DataValueField = "code";
ddlxueli.DataBind(); 绑定数据