ASP.NET中GridView动态添加下拉框

    技术2025-11-10  8

    ASP.NET中GridView动态添加下拉框

    //设计页        <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;">                    &nbsp;请选择要添加的下拉框列数:<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();        }    }

    以上本人有试过,可以成功,但刷新一次就没了!根据实际情况应用 吧!

     

    最新回复(0)