我想知道如何在Asp.Net Repeater控件的HeaderTemplate或FooterTemplate中找到控件.
我可以在ItemDataBound事件上访问它们,但我想知道如何获取它们(例如,在页眉/页脚中检索输入的值).
注意:我在找到答案之后在这里发布了这个问题,以便我记住它(也许其他人可能会觉得这很有用).
我有一个复杂的asp.net表单,在一个表单中甚至有50到60个字段Multiview,在MultiView中我有一个GridView,而在GridView中我有几个CheckBoxes.
目前我正在使用该FindControl()方法的链接并检索子ID.
现在,我的问题是,是否有任何其他方法/解决方案可以在ASP.NET中找到嵌套控件.
我曾经FindControl在.NET 2.0/3.0之前使用过.现在看来,由于某些原因,我的控件的ID会被分配一个时髦的名字.例如,我为复选框分配了一个id"cbSelect",但FindControl找不到它.当我查看它被分配的HTML时ctl00_bodyPlaceHolder_ctl02_cbSelect.
我还没有找到提到它的FindControl的一个例子.事实上,每个人似乎都像正常一样使用find控件.
那么,我做错了什么?.Net改变了吗?任何人都可以为我解释这一点,这真的令人沮丧!
FindControl如果我需要找到Control内部的任何内容GridView Template,更具体地说,方法是如何工作的ItemTemplate?
我有一个,hyperlink但它无法找到相同的.
用代码更新问题
GridView 代码如下:
<asp:GridView ID="grvYourOpportunities" runat="server" AllowPaging="True" AutoGenerateColumns="False"
DataKeyNames="ID#,B,H" PageSize="20" CellPadding="4" ForeColor="#333333" GridLines="Both"
OnRowDataBound="grvYourOpt_RowDataBound">
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
i
</HeaderTemplate>
<ItemTemplate>
<%# Eval("i") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
H
</HeaderTemplate>
<ItemTemplate>
<%--<a href="javascript:ShowChildGrid('div<%# Eval("ID#") %>');">
<img id="imgdiv<%# Eval("ID#") %>" alt="Click" border="0" src="plus.gif" runat="server" /> </a> --%>
<asp:HyperLink runat="server" ID="hlPlus" ImageUrl="~/plus.gif"></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
B
</HeaderTemplate>
<ItemTemplate>
<%--<%# Eval("B") %>--%> …Run Code Online (Sandbox Code Playgroud) 嗨,我在itemscontrol的datatemplate中只有一个文本框.当我将itemcontrols绑定到一个可观察的集合时,我得到两个文本框.但我需要根据每个文本框进行一些操作,我希望使用一些id分别找到每个文本框.
任何人都可以帮助如何在WPF中的itemscontrol中找到控件.
存在MyControl1.Controls.OfType<RadioButton>()只搜索通最初收集和不进入到孩子.
是否可以使用Enumerable.OfType<T>()或LINQ不使用自己的递归方法找到特定类型的所有子控件?像这样.
我必须Control在一个绑定到母版页的aspx页面中找到一个.
母版页包含:
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
内容页面包含:
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
我添加了一个Table与ID formtable作为一个孩子Content2.
我尝试使用以下代码来访问Table,但代码返回null:
protected void Ok_Click(object sender, EventArgs e)
{
Table tblForm = this.FindControl("MainContent").FindControl("formtable") as Table;
}
Run Code Online (Sandbox Code Playgroud)
我该如何访问Table?
我有一个Literal控件,我试图找到,所以我可以插入文本.我有一个包含多个内容占位符的母版页.
<asp:Content ID="Content7" ContentPlaceHolderID="MainLinks" runat="server">
<h3>Project Navigation</h3>
<ul class="rightColBoxNav">
<asp:Literal ID="litNavLinks" runat="server" />
</ul>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
我一直得到"对象引用未设置为对象的实例".如何找到此对象以便我可以找到并更新它?
我试过了:
((Literal)Page.FindControl("litNavLinks")).Text = sb.ToString();
((Literal)Page.Page.FindControl("litNavLinks")).Text = sb.ToString();
((Literal)Page.FindControl("Content7").FindControl("litNavLinks")).Text = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
无济于事.我如何确定位置?
我ListView喜欢这个
<asp:ListView ID="ListView1" runat="server">
<EmptyDataTemplate>
<asp:Literal ID="Literal1" runat="server" text="some text"/>
</EmptyDataTemplate>
...
</asp:ListView>
Run Code Online (Sandbox Code Playgroud)
在Page_Load()我有以下几点:
Literal x = (Literal)ListView1.FindControl("Literal1");
x.Text = "other text";
Run Code Online (Sandbox Code Playgroud)
但是x回归null.我想更改Literal控件的文本,但我不知道如何做到这一点.
我想在GridView的标题中有一个DropDownList.在我的代码隐藏中,我似乎无法访问它.这是HeaderTemplate:
<asp:TemplateField SortExpression="EXCEPTION_TYPE">
<HeaderTemplate>
<asp:Label ID="TypeId" runat="server" Text="Type" ></asp:Label>
<asp:DropDownList ID="TypeFilter" runat="server" AutoPostBack="true">
</asp:DropDownList>
</HeaderTemplate>
...
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
这里是代码背后的部分,我试图访问控件'TypeFilter'.
protected void ObjectDataSource1_Selected(object sender,
ObjectDataSourceStatusEventArgs e)
{
DataTable dt = (DataTable)e.ReturnValue;
int NumberOfRows = dt.Rows.Count;
TotalCount.Text = NumberOfRows.ToString();
DataView dv = new DataView(dt);
DataTable types = dv.ToTable(true, new string[] { "EXCEPTION_TYPE" });
DropDownList typeFilter = (DropDownList)GridView1.FindControl("TypeFilter");
typeFilter.DataSource = types;
typeFilter.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
您会注意到我正在尝试使用FindControl来获取对DropDownList控件的引用.此调用返回null而不是返回控件.如何访问控件?
findcontrol ×10
asp.net ×9
c# ×7
.net ×3
controls ×1
gridview ×1
itemscontrol ×1
linq ×1
listview ×1
master-pages ×1
repeater ×1
wpf ×1