简体   繁体   English

如何在页面加载的ListView中找到控件

[英]How to find control in ListView on Page Load

I am trying to find the formview inside my listview on the page load. 我正在尝试在页面加载的列表视图中找到formview。 However, my result is always null. 但是,我的结果始终为null。 I called the DataBind method first but still nothing. 我先调用了DataBind方法,但仍然没有。

Code Behind 背后的代码

protected void Page_Load(object sender, EventArgs e)
    {
            String list = itemdropdownlist.SelectedValue;

            switch (list)
            {
                case "Section Item":
                    SectionListView.DataBind();
                    //SectionListView.Enabled = false;
                    var temp = (FormView)SectionListView.FindControl("SectionFormView");
                    temp.Enabled = true;
                    renderView(SectionListView, "hidden"); // hide listview on page load
                    break;
            }
 }

ASP.net code ASP.net代码

<InsertItemTemplate>
                        <tr style="">
                            <td>
                                <div style="font-size: .8em;">
                                    <asp:FormView ID="SectionFormView" runat="server" DataKeyNames="SectionItemID" DataSourceID="SectionDataSource">
                                        <ItemTemplate>
                                            <asp:Button ID="InsertButton" runat="server" Text="Insert" OnClick="SectionItemButton_Click" Font-Size="1.2em" />
                                            <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" Font-Size="1.2em" />
                                            <asp:Label ID="SectionItemLabel" runat="server" Text="SectionItem" Font-Bold="true" Font-Size="1.2em" />
                                            <asp:TextBox ID="SectionItemTextBox" runat="server" />
                                            <asp:Label ID="SectionItemSubLabel" runat="server" Text="SectionItem Label" Font-Bold="true" Font-Size="1.2em" />
                                            <asp:TextBox ID="SectionItemLabelTextBox" runat="server" />

                                        </ItemTemplate>
                                    </asp:FormView>
                                </div>
                            </td>
                        </tr>
                    </InsertItemTemplate>
                    <ItemTemplate>

You got that error, because the listview was not binded yet, so i think the best way would be to do all this on the ItemDataBound event. 您收到了该错误,因为listview尚未绑定,所以我认为最好的方法是对ItemDataBound事件执行所有操作。 You would find the FormView like: 您会发现FormView像这样:

 if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        FormView  SFormView= (FormView)e.Item.FindControl("SectionFormView");
        if (SFormView!= null)
        {
            //code here
        }
    }

You could use this code to find about anything. 您可以使用此代码查找任何内容。 I used it before to find Literals that I created in code behind. 我以前用它来查找我在后面的代码中创建的文字。 Use this code to find your FormView 使用此代码查找您的FormView

      private readonly List<FormView> _foundControls = new List<FormView>();
        public IEnumerable<FormView> FoundControls
        {
            get { return _foundControls; }
        }

        public void FindChildControlsRecursive(Control control)
        {
            foreach (Control childControl in control.Controls)
            {
                if (childControl.GetType() == typeof(FormView))
                {
                    _foundControls.Add((FormView)childControl);
                }
                else
                {
                    FindChildControlsRecursive(childControl);
                }
            }
        }


 FindChildControlsRecursive(<Insert relevent Code Here: Whatever element you want to search inside of like your listView, find that using FindControl>);
            FormView[] strControl = new FormView[200];
            strControl = FoundControls.ToArray();

            foreach (FormView i in strControl)
            {
                if (i.ID.Equals("< insert controlId of your FormView>"))
                {
                    // do something when you find it
                }

            }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM