2013-04-23 2 views
0

У меня есть эти флажки на Repeater:Как назначить идентификатор флажку в ретрансляторе?

<asp:Repeater id="repeaterCategories" runat="server"> 
    <ItemTemplate> 
     ... 

     <asp:CheckBox ID="chbCategoria" Text="My Label" runat="server" /> 

     ... 
    </ItemTemplate> 
</asp:Repeater> 

каждый флажок должен совпадать с ID страницы, взятой из базы данных (каждый repeaterCategories элемент имеет свой уникальный идентификатор, так что один).

Как я могу установить его? Итак, при обратной передаче я проверяю, какие контрольные элементы CheckBox проверены, и я получаю идентификаторы.

ответ

1

вы можете попробовать добавить пользовательский атрибут, как этот

protected void repeaterCategories_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     CheckBox chk = e.Item.FindControl("chbCategoria") as CheckBox ; 
     chk.Attributes.Add("PageID", DataBinder.Eval(e.Item.DataItem, "DB_FIELD").ToString()); 
    } 
} 
+0

Кажется приятным! Почему это 'if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)'? – markzzz

+0

для поиска элемента управления в ItemTemplate или AlternatingItemTemplate –

+0

Ну, но у меня есть только «ItemTemplate», поэтому он будет перебирать только это :) – markzzz

0
страница управления

Пользователь:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %> 
<asp:CheckBox id ="MyCheckBox" runat="server"/> 

код позади:

using System; 

public partial class WebUserControl : System.Web.UI.UserControl 
{ 
    private string _myProperty; 
    public string MyProperty 
    { 
     get { return this._myProperty; } 
     set { this._myProperty = value; } 
    } 

    public bool IsChecked 
    { 
     get 
     { 
      return this.MyCheckBox.Checked; 
     } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

На странице повторителя:

<%@ Register Src="~/WebUserControl.ascx" TagPrefix="uc1" TagName="WebUserControl" %> 

Внутри ретранслятора:

<asp:Repeater id="repeaterCategories" runat="server"> 
    <ItemTemplate> 
     ... 

     <uc1:WebUserControl runat="server" ID="WebUserControl" MyProperty="My_ID_Value" /> 

     ... 
    </ItemTemplate> 
</asp:Repeater> 

Вы можете добавить столько свойств, сколько захотите, на свой веб-пользовательский элемент управления.

+0

Ухм не на самом деле! Пробовал с помощью 'checkBox.Attributes.Add (" category-id ", ((ArchiePagina) e.Item.DataItem) .UniqueID) ;, но он добавляет атрибут к диапазону, а не к флажку: O – markzzz

+0

Я не понимаете, что вы говорите: O – markzzz

Смежные вопросы