• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

ایجاد کنترل به صورت داینامیک

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
آقا میخوام با خوندن دیتا بیس متناسب با تعداد رکورد ها یه کنترل اضافه بشه
روشی که تو ذهنمه رو میگم
فکر کنم با datareader و while بشه
حالا چجوری کنترل اضافه کنه؟
controls.add ?
چجوری ؟
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
یکم بیشتر توضیح میدی؟
مثلا کنترل رو میخوای به دیتاگرید یا دیتالیست اضافه کنی یا نه؟ و چه کنترلی؟
و یا اینکه چیزه دیگه ای مدنظرته؟
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
ببین دیدی توی سایتها مثلا توی دایرکتوری ها که تویه صفحه ای هر بخش رو اسمشو نوشته که به صورت لینک به اون صفحس و توی پرانتز تعداد مطالب اون بخش رو نوشته؟
میخوام یه صفحه درست کنم که توش تمام عناوین سایت به صورت لینک باشه و توی پرانتز جلوش تعداد مطالبش باشه
لازمه که از دیتا بیس بخونه چه بخشایی داریم که برا هرکدومش یکی درست کنه.
فکر کنم مثلا بالیبل بشه شایدم گزینه های بهتر باشه.
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
یه سوال دیگه البته مربوط به عنوان تاپیک نیست
همین مطالبو که گفتم میخوام به صورتی که میگم چیده بشه ولی چون داینامیکه نمیدونم چجوری اینکارو بکنم.
یه عنوان اصلی بعد زیرش عناوین فرعی بعد جلوی عنوان اصلی یه عنوان اصلی دیگه و زیرش عنوان های فرعیش بعد همین عمل زیرش تکرار بشه ینی توی هر ردیف 2 تا دسته باشه بعد 2 تای بعدی بره زیرش.
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
اگر هدف شما اینه که یک چیزی مثل آرشیو ماهیانه و یا آرشیو موضوعی وبلاگ ها درست کنی که تنها راه شما این نیست که کنترل ها را دینامیک اضافه کنی میتونی از DataGrid , DataSet , Repeater برای این کار ها استفاده کنی که هیچ محدودیتی نداره . که به نظر من بهتر از روشی که شما میخوای کار کنی . اما یه مثال هم برای درخواست شما میزارم :


کد:
HyperLink lnk;

while(reader.Read())
{
lnk = new HyperLink();
lnk.Text = "Some Text";
lnk.NavigateUrl = "Some Url";
.....

placeHolderMenu.Controls.Add(lnk);
}

یه چیز تو این مایه ها داستانش هم اینه که باید از کنترلی که میخوای یک نمونه بسازی بعد مشخصه های آن نمونه را تنظیم کنی و در آخر هم به PlaceHolder یا هر کنترل دیگه که دوست داری اضافه کتی .

اما بازم میگم روش خیلی خوبی نیست این داستان . اکثر اهداف شما با سه تا کنترل بالا قابل پیاده سازیه .
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
ممنون مهدی جان
سایت زیر رو ببین
http://dmoz.com
من زیاد بلد نیستم با طرز چینش کنترل های دیتاگریدو دیتا لیستو اینا و برم و اینشکلیش کنم.
میشه یه ذره راهنمایی کنی؟ اگه اونو یاد بگیرم مسلما خیلی کارم راحتتر و اصولی تر میشه
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
شروین این کنترلهایی که بالا نوشتی دارای یک سری تمپلیت هستند که قالب و الگوی نمایشی داده ها رو مشخص می کنند
که هم می تونی بوسیله کد نویسی در هنگام اجرا بهش قالب بدی و هم اینکه قالبش رو از قبل مشخص کنی
ساده ترین حالت اینه که قبل از اجرا قالبشون رو مشخص کنی
به عنوان مثال دیتالیست دارای تگ <Itemtemplate> که می تونی نحوه چگونگی نمایش اطلاعات رو داخل اون مایش بدی
مثلا برای نمایش داده های به نام Name از کد زیر استفاده کنی

کد:
<asp:datalist runat=server>
<itemtemplate>
]<%#Container.DataItem("ّFieldname")%>
</itemtemplate>
</asp:dataList>


حال اگه بخوای داده ها رو به شکل خاصی نمایش بدی می تونی داخل تگ itemtemplate از کدهای html مثل تیبل و دیو استفاده کنی. البته یادت باشه برای نمایش هر فیلد در هر محلی این کد رو باید بذاری

کد:
<%#Container.DataItem("ّFieldname")%>




کد:
<ItemTemplate>
      <table border=1>
      <tr><td><b>ID : </b></td>
         <td>'<%# DataBinder.Eval(Container.DataItem, "title_id") %>'
         </td></tr>
      <tr><td><b>Title : </b></td>
         <td>'<%# DataBinder.Eval(Container.DataItem, "title") %>'
         </td></tr>
      <tr><td><b>Price : </b></td>
         <td>'<%# DataBinder.Eval(Container.DataItem, "price") %>'
      </td></tr>
      </table>


همچنین برای ایجاد لینک و یا لینک باتن و یا هر کنترل دیگری در داخل این تگ، باید آنها را در محلی که می خواهیم بنویسیم و مقادیر انها را برابر همان کد بالا قرار دهیم
مثل:

کد:
<ItemTemplate> 

<li> 

<asp:LinkButton 

Text='<%#Container.DataItem("ّFieldname")%>
'
Runat="Server" /> 

</ItemTemplate>


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


همچنین می توانی قالبهایی که یه آیتم دیتالیست انتخاب شده و یا در حال ویرایش می باشد رو به همینصورت مشخص کنی

مثلا

قالب ویرایش

کد:
<EditItemTemplate>
      <table border=1>
      <tr><td><b>ID : </b></td>
         <td>'<%# DataBinder.Eval(Container.DataItem, "title_id") %>'
         </td></tr>
      <tr><td><b>Title : </b></td>
         <td><asp:TextBox 
             Text='<%# DataBinder.Eval(Container.DataItem, "title") %>' 
             runat=server ID="title"/>
         </td></tr>
      <tr><td><b>Price : </b></td>
         <td><asp:TextBox 
             Text='<%# DataBinder.Eval(Container.DataItem, "price") %>' 
             runat=server ID="price"/></td></tr>
      </table>
      <asp:LinkButton Text="Cancel" CommandName="Cancel" 
                      Runat="server" ID="cancel" />
      <asp:LinkButton Text="Update" CommandName="Update" 
                      Runat="server" ID="update" />
   </EditItemTemplate>


و امکانات بسیار دیگری

اینجا رو هم یه نگاه بنداز
DataList Class
DataGrid Class
Repeater Class


دیتاگرید و ریپیتر هم مانند دیتالیست هستند
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
39
محل سکونت
تهران
آقا دستت درد نکنـــــــه
دیگه نمیدونم چجوری تشکر کنم ازت
 
بالا