Как добавить класс css в «гиперссылку» внутри «Управление повторителем» из кода на основе подсчета строк данных

Я использую HyperLink внутри элемента управления повторителем для отображения категорий и подсчета строк данных, я хочу добавить класс css на основе подсчета строк данных из кода позади.

вот так:

if (dt.Rows.Count > 10)
{

//add css class to  'HyperLink9' that is being used inside the repeater control

}

код asp.net

<asp:Repeater ID="CloudTags" runat="server">
    <ItemTemplate>
        <asp:HyperLink ID="HyperLink9" runat="server">
            <%#DataBinder.Eval(Container,"DataItem.Category")%>
            (<%#DataBinder.Eval(Container,"DataItem.cnt")%>)
        </asp:HyperLink>
    </ItemTemplate>
</asp:Repeater>

код позади

protected void BindRepeaterData()
{

con.Open();

SqlDataAdapter da = new SqlDataAdapter("SELECT id, category, ( SELECT COUNT(id) FROM entry_table WHERE category.id = entry_table.cat_id) as cnt FROM category", con);
DataTable dt = new DataTable();
da.Fill(dt);

CloudTags.DataSource = dt;

if (dt.Rows.Count > 10)
{

//i want to add css class here if row count is greater than 10 in 'HyperLink9'

}

CloudTags.DataBind();

con.Close();

}

при загрузке страницы

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindRepeaterData();
    }

}

person Firoz Khan    schedule 20.08.2014    source источник
comment
Идентификатор HyperLink9 не обнаруживает/не извлекает ..... сообщение «HyperLink9» не существует в текущем контексте.   -  person Firoz Khan    schedule 20.08.2014


Ответы (1)


Что вам нужно сделать, так это добавить обработчик ItemDataBound к вашему повторителю.

<asp:Repeater ID="CloudTags" runat="server"
    OnItemDataBound="CloudTags_ItemDataBound">

Это событие будет срабатывать каждый раз, когда элемент привязывается к повторителю. Затем во время события проверьте количество предметов в ретрансляторе. Обратите внимание, что количество элементов будет равно количеству элементов, уже привязанных. Поскольку вы в настоящее время находитесь в процессе привязки предмета, счет будет на единицу меньше, чем вы думаете. Если количество больше или равно 10, найдите гиперссылку внутри этого RepeaterItem и добавьте CssClass.

protected void CloudTags_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        if (CloudTags.Items.Count >= 10)
        {
            HyperLink HyperLink9 = (HyperLink)e.Item.FindControl("HyperLink9");
            HyperLink9.CssClass = "some-class";
        }
    }
}
person j.f.    schedule 20.08.2014