创建动态网格与下拉

本文关键字:网格 动态 创建 | 更新日期: 2023-09-27 18:04:54

我想创建一个动态网格视图,第一行作为下拉点击编辑按钮。我不知道怎么开始。你能帮帮我吗?我已经阅读了一些文章,发现使用InstantiateIn方法可以实现。

public class CreateItemTemplate : ITemplate
    {
        //Field to store the ListItemType value
        private ListItemType myListItemType;
        public CreateItemTemplate(ListItemType item)
        {
            myListItemType = item;
        }
        public void InstantiateIn(System.Web.UI.Control container)
        {
            //Code to create the ItemTemplate and its field.
            if (myListItemType == ListItemType.Item)
            {
                TextBox txtCashCheque = new TextBox();
                container.Controls.Add(txtCashCheque);
            }
        }
    }

创建动态网格与下拉

如果您想在单个页面上显示此内容,则不应该创建服务器控件。

使用网格的TemplateField

注意:如果您使用AutoGenerateColumns = true,只需将列添加到网格标记。

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true">
    <Columns>
    <asp:TemplateField>
    <ItemTemplate>
    <asp:DropDownList id="someId" runat="server">
        <asp:ListItem Text="One" />
                    <asp:ListItem Text="twO" />
         </asp:DropDownList>
    </ItemTemplate>
    </asp:TemplateField>
    </Columns>
    </asp:GridView>

你可能需要提供更多关于你想用这个下拉菜单做什么的信息(它需要一个默认值吗?)根据您的需要,您可以在标记中完成此操作,或者您可能需要使用网格事件。

  • 布莱恩更新:添加事件处理程序

如果你在网格中设置onrowcreated="GridView1_RowCreated"

    <asp:GridView ID="GridView1" runat="server"  AutoGenerateColumns="true" 
        onrowcreated="GridView1_RowCreated">

并在后面的代码中执行:

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            var dropdown = e.Row.FindControl("someId") as DropDownList;
            //dropdown.DataSource= <>; bind it
            //dropdown.SelectedValue =<>"; / set value how you would 
        }
    }

你可以在它被创建时操作下拉列表。如果不能查找控件,则查看每个单元格:e.w row . cells [[index]].FindControl("someId")