بادرود.

به نکته جالبی اشاره کردید.
تمامی این کنترلهای ، یک لیستی از اطلاعات را به عنوان منبعی از دیتا قبول می کنند.
و هیچ کدام تفاوت خاصی با هم ندارد.

تمامی این کنترلها دارایی پراپرتی به نام DataSource می باشند که یک منیع اطلاعاتی را قبول می کند.فقط تنها شرط این است که این منبع باید اینتر فیس IEnumerable را محقق کرده باشد.

و بعد به وسیله یک متد به نام DataBind می توانید این منبع را به کنترل مقید کنید.

معمولا برای منبع داده ای از DataTable ،DataSet و نظایر اینها استفاده می شود.

بگذارید برای نمونه یک مسال را برسی کنیم:

public class Item
{
private string _name;
public Item(string name) { _name = name; }

public string Name { get { return _name; } }
}

public class TestDataSource
{
public static ArrayList GetData()
{
ArrayList items = new ArrayList();
for (int i=0; i<10; i++)
{
Item item = new Item("item" + i.ToString());
items.Add(item);
}
return items;
}
}


کلاس item می تواند به عنوان منبع داده در نظر گرفته شود.
و متد GetData به عنوان ارائه دهنده اطلاعات.

<asp:Repeater Runat="server" ID="_itemsRepeater" 
EnableViewState="false">
<ItemTemplate>
<asp:CheckBox Runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'
/>
<br/>
</ItemTemplate>
</asp:Repeater>


خوب،در اینجا ما یک کنترل Repeater داریم که می خواهیم به دیتا ی مورد نظر بایند کنیم.
نکته : شما می توانید کنترل های مورد نظر را جایگزین Repeater کنید.

 private void Page_Load(object sender, EventArgs e)
{
_itemsRepeater.DataSource = TestDataSource.GetData();
_itemsRepeater.DataBind();
}


و درآخر شما دیتای مورد نظر را در رویداد لود فرم به کنترل مورد نظرتان بایند می کنید.
شما باید نتیجه ای شبیه به تصوری زیر بدست آورید.



نکته1 : منبع داده ما در اینجا یک ArrayList است که اینترفیس IEnumerable را محقق می کند.

خواهشمندم حتما قبل از هر گونه سوال حداقل تحقیق و مطالعه را راجع به آن موضوع انجام دهید!

به امید موفقیت.