Показать / скрыть теги div в ASP Repeater C # - PullRequest
0 голосов
/ 04 октября 2018

Я хочу иметь возможность отображать / скрывать «теги div» в зависимости от ролей пользователя.

Некоторые люди видят что-то, а другие нет.Это легко за пределами повторителя.Очевидно, d1.Visible = false; не работает.

Я искал в Интернете, включая стек, но безрезультатно.Это больше вопрос о том, какое направление будет уместным.

Код - Встроенный -

protected void Eng_SelectedIndexChanged(object sender, EventArgs e)

{

sqlInv = "Select Item1, Item2, Item3, From Table";

IDataReader reader6 = DatabaseHelper.GetReader(string.Empty, sqlInv);


    Repeater1.DataSource = reader6;

        Repeater1.DataBind();

        reader6.Close();

}

html

asp:Repeater runat="server" id="Repeater1">

itemtemplate>

div>
div id="d1" runat="server"><%# DataBinder.Eval(Container.DataItem, "Item1") %>/div>

<div id="d2" runat="server"><%# DataBinder.Eval(Container.DataItem, "Item2") %>/div>

div id="d3" runat="server"><%# DataBinder.Eval(Container.DataItem, "Item3") %>/div>


/itemtemplate>

/asp:Repeater>


/div>

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Спасибо за ответ и направление Майк.Перед вашим ответом я решил попробовать очень похожий подход.Следующее: защищенный void Repeater1_ItemDataBound (отправитель объекта, RepeaterItemEventArgs e)

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==       ListItemType.AlternatingItem)
    {




        // Show or hid div here
        System.Web.UI.HtmlControls.HtmlContainerControl div1 = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("div1");

        System.Web.UI.HtmlControls.HtmlContainerControl div2 = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("div2");

        System.Web.UI.HtmlControls.HtmlContainerControl div3 = (System.Web.UI.HtmlControls.HtmlContainerControl)e.Item.FindControl("div3");

Also changed the test for the reader.
the reader is checking the DB for a RoleId but the problem was when the reader

был пуст или пуст, страница взорвалась.

I changed to test if the reader had a record or not.
     if (reader6a.Read())
        {
            div1.Visible = true;
            div2.Visible = false;
            div3.Visible = false;
        }
    else
{
and so on
}
0 голосов
/ 05 октября 2018
    <asp:Repeater runat="server" id="Repeater1" OnItemDataBound="Repeater1_ItemDataBound">

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType.Equals(ListItemType.AlternatingItem) || e.Item.ItemType.Equals(ListItemType.Item))
        {
            //You can hide/show disable/enable your div
            Control div1 = e.Item.FindControl("div1");
            //get role here and check 
            // if role != admin 
           div1.Visible = false;
        }
    }
...