这篇文章主要讲解了“怎么遍历PlaceHolder中的web控件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么遍历PlaceHolder中的web控件”吧!
经常用到使用PlaceHolder加载web用户控件,遍历控件取值就用到了。下面这个方法是遍历所有控件,可以遍历某一类控件(源码是查找所有checkbox控件),遍历所有类型控件,修改一下即可
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace SantGo.Bunli.Web
{
public partial class Site1 : System.Web.UI.MasterPage
{
protected void Page_Load( object sender, EventArgs e )
{
if( !IsPostBack )
{
List<Control> checkBoxList = new List<Control>();
FindSubControls( ContentPlaceHolder1, checkBoxList, new ControlMatchHander( CheckBoxMatchFunc ) );
foreach ( CheckBox checkBox in checkBoxList )
{
divDebug.InnerHtml += string.Format( "{0}, {1}<br />",
checkBox.ID,
checkBox.ClientID );
}
}
}
protected delegate bool ControlMatchHander( Control control );
protected void FindSubControls( Control control, IList<Control> saveCollection, ControlMatchHander matchFunc )
{
if ( control.HasControls() )
{
foreach ( Control subControl in control.Controls )
{
FindSubControls( subControl, saveCollection, matchFunc );
}
}
else
{
if ( matchFunc( control ) )
{
saveCollection.Add( control );
}
}
}
protected bool CheckBoxMatchFunc( Control control )
{
return control is CheckBox;
}
}
}
顺便举个例子说一下placeholder的用法。
第一步加载放置placeholder控件
<asp:PlaceHolder ID="ph" runat="server"></asp:PlaceHolder>
第二步加载自定义web控件,记住这个加载一定要放到if (!IsPostBack)的外面,否在在回传的时候 你讲取不到placeholder中的控件。
if (System.IO.File.Exists(Server.MapPath("test.ascx")))
ph.Controls.Add(LoadControl("test.ascx"));
第三步,遍历控件取值
//用上面的方法取控件,然后将取值
感谢各位的阅读,以上就是“怎么遍历PlaceHolder中的web控件”的内容了,经过本文的学习后,相信大家对怎么遍历PlaceHolder中的web控件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。