我试图在课堂上找到一个中继器控件,但我不知道我在哪里做错了。
在我的 ASPX 页面中,我有一个包含两个图像按钮的中继器,并且在页面加载时调用了我在类中定义的方法。
这是我的课程页面,
public class Authorization
{
public Authorization()
{
}
public void ChangeControlStatus(ControlCollection PageControls, int Role_id)
{
using (EHSIMSDataContext db = new EHSIMSDataContext())
{
var Role_Assigned = (from auth in db.AUTHORISATIONs
where auth.ROLE_ID.Equals(Convert.ToInt32(Role_id)) && auth.PAGE_ACCESS.Equals(1)
select auth);
foreach (Control ctrl in PageControls)
{
string ControlName = (ctrl.GetType()).Name;
switch (ControlName)
{
case "ImageButton":
ImageButton imgbut = (ImageButton)ctrl;
{
foreach (var role in Role_Assigned)
{
if(role.ADD_ACCESS == false)
if(imgbut.ID.Equals("BtnAdd"))
imgbut.Enabled = false;
}
}
break;
case "Repeater":
Repeater rep = (Repeater)ctrl;
foreach (RepeaterItem item in rep.Items)
{
ImageButton img_but = item.FindControl("lnkEdit") as ImageButton;
if (role.EDIT_ACCESS == false)
if (img_but.ID.Equals("lnkEdit"))
img_but.Enabled = false;
}
break;
}
ChangeControlStatus(ctrl.Controls, Role_id);
}
}
}
这就是我在 ASPX 页面中所做的,
protected void Page_Load(object sender, EventArgs e)
{
Authorization assign_auth = new Authorization();
assign_auth.ChangeControlStatus(Page.Controls, Roleid);
if (!IsPostBack)
{
-----
现在,我将所有控件传递给方法“ChangeControlStatus”,因为在中继器中有图像按钮,上述方法中的 foreach 不起作用,但它找到了“中继器”控件。我应该怎么做才能找到方法中的控件?
附加信息。因此,简单地说,在我们的项目中,我们有许多具有不同角色的用户,基于我想要启用/禁用的角色或控件。我不能在我们项目的每个页面中都这样做,因为有很多控件和很多页面。