PDA

View Full Version : سوال: ایجاد صفحه به صورت داینامیک



romisa_18
پنج شنبه 05 آذر 1388, 10:04 صبح
من یه سایت دارم میسازم که یک قسمت آموزش داره مطالب آموزشی رو تو dataBase نگهداری میکنه لینک مطلب تو صفحه اموزش هست و روی هر کدوم که کلیک می کنیم توی یه صفحه جدید مثلا به اسم amozesh1.aspx نشون داده میشه حالا توی dataBase ممکنه چندین مطلب آموزشی وجود داشته باشه ,نمی تونیم پیش بینی کنیم که چند مطلب آموزشی خواهیم داشت تا به همون تعداد page درست کنیم.پس صفحات باید به صورت داینامیک ایجاد بشه ومطلب از بانک لود بشه و توش قرار بگیره حالاچطور صفحات داینامیک ایجاد کنم.

shocraneh
پنج شنبه 05 آذر 1388, 10:46 صبح
دوست من اونجوری که من فهمیدم شما نیاز به صفحه داینامیک نداری . شما باید توی صفحه ی اول در حالت design یه table بزاری بعد در load صفحه مقادیر رو از پایگاه بخونی و td و tr رو که نیاز داری در کدنویسی لحاظ کنی و اون فیلدی که می خای لینک کنی به یه صفحه دیگه البته با id که کاربر روش کلیک کرده . به میزان رکوردی داخل جدولت در اجرا برات سطر و ستون درست میشه .
حالا تو صفحه بعدی hd رکورد مورد نظر رو داری . خوب روی load کدنویسی کن . دیگه نیاز نیست به اندازه تمام مقالاتت صفحه داشته باشی

romisa_18
پنج شنبه 05 آذر 1388, 11:25 صبح
دوست عزیز من تازه کارم و مطالبی که گفتید راستش زیاد متوجه نمی شم ببینید مطالب آموزشی من به صورت ثابت نیست واضافه میشه مثل سایت های خبری و من توی یکی از تاپیکها خوندم که باید از ایجاد صفحات داینامیک استفاده کرد.

shocraneh
پنج شنبه 05 آذر 1388, 16:56 عصر
منظورشون از داینامیک همینه که من گفتم . شما در حالت design یه table روی صفحه بزار

<td colspan="2">
<asp:Table ID="Table1" runat="server" Width="98%" CssClass ="t10 ">
</asp:Table>
</td>

وحالا تو لود


Dim cn As New OleDbConnection(strCnn)
Dim strproduct As String = "SELECT * FROM Tbl "
Dim Cmd As New OleDbCommand(strproduct, cn)
cn.Open()
Dim dr As OleDbDataReader
dr = Cmd.ExecuteReader()
While (dr.Read())
Dim c1 As New TableCell, c2 As New TableCell
c1.CssClass = "font1"
c1.ColumnSpan = 1
c1.RowSpan = 1
c1.Width = 85
name = dr("name").ToString()
c1.Text=name
Dim tr As New TableRow, tr1 As New TableRow
tr1.Cells.Add(c1)

Dim h As New HyperLink
h.Text = dr("productTitr").ToString()
h.NavigateUrl = "product.aspx?id=" + dr("id").ToString
h.Font.Underline = False
h.CssClass = "link"

h.ToolTip = tooltip
c2.Controls.Add(h)
Table1.Rows.Add(tr)


پس اول ستون ها رو ایجاد و خصوصیاتش را تنظیم وبعد سطر ها را ایجاد . ستون را به سطر نسبت می دی و تمام سطر های ایجاد شده را به جدول نسبت می دی (اونیکه تو design گذاشتی ) چون دیتاریدر است به تعداد رکورد های جدولت درست می کنه وهی تکرار میشه
حالا کاربر روی لینک کلیک میکنه تا متن اصلی رو بخونه پس ما کاربر رو باید به صفحه مورد نظر ببریم البته به همراه id که روی hyperlink رو در بالا دقت کن

حالا در صفحه product.aspx


Dim ss As String = Request.QueryString("id")

از ss در شرط select استفاده کن . یعنی ss همون id رکورد مورد نظر است
پیشاپیش تبریک عید

احمد سامعی
جمعه 06 آذر 1388, 10:16 صبح
راهي كه دوستمون گفتند درست اما مي شه از روش هاي مختلف اجرا كرد
من هم يك روش ديگه پيشنهاد مي كنم اگر دوست داشتين امتحان كنيد اين روش بر مبناي Table Less هست (اما روش همون تو جزئيات فرق مي كنه)
از رپيتر استفاده كنيد و به جاي استفاده از td از div با خواصيت runat='server' استفاده كنيد
به جاي اينكه مستقيم رپيتر پر كني مقدار گرفته شده از بانك تو يك ديتاست بريز و جدول با ايندكس صفر از اين ديتاست به دتاسورس رپيتر بده و متد دتابيند رپيتر رو هم فراخواني كن

براي شكل دهي مي توني تو رپيتر از جدول كشي با div انجام بدي و هر مقدار از فيلدها را با متد Eval از ديتاسورس دريافت كني به اين شكل در ايجا من فيلد آي دي خوندم


<% #Eval("id") %>

براي اطلاعات بيشتر نحوه كار با رپيتر و QueryString به آدرس زير برو:
http://www.ASP.NET/learn/videos/video-370.aspx
http://www.ASP.NET/learn/

سوالي بود بپرس