//设计页 <table border="1" cellpadding="0" cellspacing="0"> <tr> <td style="font-weight: bold">GridView控件中动态添加下拉框列</td> </tr> <tr> <td> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" Font-Size="10.5pt" ForeColor="#333333"> <Columns> <asp:BoundField HeaderText="标题" DataField="text"/> </Columns> <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#E3EAEB" /> <EditRowStyle BackColor="#7C6F57" /> <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> <AlternatingRowStyle BackColor="White" /></asp:GridView> </td> </tr> <tr> <td style="font-size: 9pt; height: 26px;"> 请选择要添加的下拉框列数:<asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>1</asp:ListItem> <asp:ListItem>2</asp:ListItem> <asp:ListItem>3</asp:ListItem> <asp:ListItem>4</asp:ListItem> <asp:ListItem>5</asp:ListItem> <asp:ListItem>6</asp:ListItem> <asp:ListItem>7</asp:ListItem> <asp:ListItem>8</asp:ListItem> <asp:ListItem>9</asp:ListItem> <asp:ListItem>10</asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="添加模板列" Font-Size="10pt" /></td> </tr> </table>
//后台代码
System.Collections.ICollection CreateDataSource() { DataTable dt = new DataTable(); DataRow dr; dt.Columns.Add(new DataColumn("id", typeof(Int32))); dt.Columns.Add(new DataColumn("text", typeof(string))); for (int i = 0; i < 6; i++) { dr = dt.NewRow(); dr[0] = i; dr[1] = "列表" + i.ToString(); dt.Rows.Add(dr); } DataView dv = new DataView(dt); return dv; } public class GridViewTemplate : ITemplate { private DataControlRowType dcrType; private string columnName; public GridViewTemplate(DataControlRowType type, string colname) { dcrType = type; columnName = colname; } public void InstantiateIn(System.Web.UI.Control container) { switch (dcrType) { case DataControlRowType.Header: Literal literal = new Literal(); literal.Text = columnName; container.Controls.Add(literal); break; case DataControlRowType.DataRow: DropDownList ddl = new DropDownList(); ddl.ID = "dropdownlist"; ddl.AppendDataBoundItems = true; ddl.Items.Add(new ListItem("-----请选择------", "")); ddl.Items.Add(new ListItem("AA", "a")); ddl.Items.Add(new ListItem("BB", "b")); ddl.Items.Add(new ListItem("CC", "c")); container.Controls.Add(ddl); break; default: break; } } } protected void Button1_Click(object sender, EventArgs e) { for (int index = 1; index < GridView1.Columns.Count; index++) { GridView1.Columns[index].Visible = false; } for (int i = 0; i < Convert.ToInt32(DropDownList1.SelectedValue); i++) { TemplateField tf = new TemplateField(); tf.ShowHeader = true; tf.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列"); tf.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, ""); GridView1.Columns.Add(tf); GridView1.DataSource = CreateDataSource(); GridView1.DataBind(); } }
以上本人有试过,可以成功,但刷新一次就没了!根据实际情况应用 吧!
