PDA

View Full Version : سوال در مورد DataGride



maryam82
پنج شنبه 03 شهریور 1384, 02:31 صبح
سلام بر دوستان وخسته نباشید.
من چند تا جدول دارم با فیلدهای(عنوان،متن اصلی، از تاریخ، تا تاریخ)سایتی که من طراحی کردم تابلوی اعلانات است که هر اطلاعیه رو از تاریخ شروع تا تاریخ پایان نگهداری می کنه.حالا من می خوام عنوان اطلاعیه های رو توی سایت توی یک datagride نشون بدم . اما دوتا مشکل دارم:
اول اینکه:این تاریخ های رو چطور باید تنظیم کنم.یعنی توی دستور select در قسمت where چه شرطی باید بنویسم.
دوم اینکه :چطور می تونم با کلیک روی عنوان به جای لینک کنم که متن اصلی اطلاعیه انجا نمایش داده شده.
وسوم اینکه چطور بعد از پایان تاریخ مشخص شده اطلاعیه ها پاک بشن یا توی یک جای ذخیره بشن و اطلاعیه های جدید سرجاشون قرار بگیره.
لطفا اگر کسی متونه کمکم کنه کد کامل هر قسمت یا توضیح کاملشو برام بنویسه.من روز شنبه تحویل پروژه دارم وشدیدآ به این کدها نیازمندم.
با تشکر

EhsanKhafan
پنج شنبه 03 شهریور 1384, 05:55 صبح
مثل این که اینجا یه قانونی دارن هر تاپیک یک سوال...حالا
اول:یعنی چی چطوری تنظیم کنی؟دو تا فیلد تاریخ رو بفرست یه SQL (حالا با یه Query ساده یا Stored Procedure).دقیقا نمیگیرم کجاش مشکل داری

دوم:لینکای خوبی تو این تاپیک هست که کمکت میکنه با DataGrid همه کار بکنی:http://www.barnamenevis.org/forum/showthread.php?t=9812

سوم: با Trigger ها میشه،میتونیم هر از گاهی خود دوباره DB تو چک کنی و اطلاعیه های منقضی رو پاک کنی یا هر کار دیگه

---

اگر می خواهی در این دنیا موفق شوی چشم به راه کسی منشین

EhsanKhafan
پنج شنبه 03 شهریور 1384, 05:58 صبح
برای دوم : مخصوصا این لینک:
http://dotnet.leadit.be/extendeddatagrid/

omid_Ahmadi
پنج شنبه 03 شهریور 1384, 06:47 صبح
لطفا اول بفرمایید برنامه شما تحت وب اجرا میشه یا تحت ویندوز؟

maryam82
پنج شنبه 03 شهریور 1384, 12:13 عصر
برنامه من تحت وب است.
از امید خان هم ممنون

omid_Ahmadi
پنج شنبه 03 شهریور 1384, 12:54 عصر
اول باید اطلاعات موجود در بانک خودتون رو در یک DataSet لود کنید. این کار رو با یک دستور SQL و بدون قسمت Where انجام بدید. به این ترتیب شما یک دیتا ست دارید که تمام اطلاعات موجود در چهار ستون جدولتون در اون موجوده.
بعد باید ستون عناوین رو در یک DropDownList (نه DataGrid، چون فقط یک ستون است) لود کرد و کاری کرد که با تغییر ردیف انتخاب شده در DataGrid صفحه به سمت سرور فرستاده بشه و اطلاعات مربوط به عنوان انتخاب شده (مثلا متن اصلی) در یک TextBox یا هر کنترل دیگه ای نمایش داده بشه. برای این کار میتونید از کد زیر استفاده کنید:



<?xml:namespace prefix = asp /><asp:DropDownList id=drpTitle OnSelectedChanged="drpTitle_SelectedIndexChanged" DataTextField="Title" DataMember="TableName" DataSource="<%# dataSetName %>" Runat="server" AutoPstBack="Trus"></asp:DropDownList>


و بعد Event مربوط به drpTitle_SelectedIndexChanged رو در قسمت کد برنامه تعریف کنید و در اینجا کدی قرار دهید که بر اساس ردیف انتخاب شده در drpTitle اطلاعات رو از DataSet استخراج کنید. فرضا با دستور Select از DataTable به صورت زیر:



DataSet.DataTable.Select("Title='" + drpTitle.SelectedText)


که به این صورت شما یک Collection از ردیفهایی که عنوان آنها با عنوان انتخاب شده در Grid برابر است دریافت میکنید که میتونید از بقیه ستونهای موجود در این Collection برای پر کردن قسمتهای دیگه ی صفحه استفاده کنید.
به لینک کردن هم نیازی نیست فقط کافیه که AutoPostBack مربوط به DropDownList رو برابر True قرار بدید و بعد هر بار که سطر انتخاب شده در لیست تغییر کرد و SelectedIndexChanged فراخوانی شد، در این متد شما اطلاعات مربوط به متن اصلی رو همونطور که در کد نشون دادم از جدول استخراج کرده وم در کنترل مناسب نمایش بدید.

برای پاک شدن اطلاعات موقع انقضای اونها روش منطقی اینه که از روشهای Scheduling در Web استفاده کنی (در سایت توضیح داده شده) ولی راه راحتتر اینه که در موقع Page_Load صفحه وقتی داری DataSet رو با اطلاعات موجود در بانک اطلاعاتی چک میکنی، اول بررسی کنی که اگر تاریخ اون اطلاعات با تاریخ امروز هماهنگ نیست اون رو با یک دستور SQL مستقیما از جدول حذف کنی.

موفق باشی.:wise1:

omid_Ahmadi
پنج شنبه 03 شهریور 1384, 23:12 عصر
کد بالا که نشون داده نشد کد مربوط به تولید یه DorpDownList با مشخصات زیر بود:


ID="drpTitle"
Runat="server"
AutoPostBack="True"
DataMember="TableName"
DataTextField="Title"
OnSelectedChanged="drpTitle_SelectedIndexChanged"

maryam82
جمعه 04 شهریور 1384, 00:47 صبح
سلام
من کد شما رو امتحان کردم. تمام خصوصیات رو در DropDownlist همانطوری که گفته بودید تغییر دادم.اما selected indeix change داره نه OnSelected. ودیگه هم کد دومی روی توی قسمتی که گفتید نوشتم. اما بعد ازDataSet که Data tBAle می نویسم Error می گیره. حالا باید چه کار کنم. ممنون.

omid_Ahmadi
دوشنبه 07 شهریور 1384, 08:29 صبح
تمام خصوصیات رو در DropDownlist همانطوری که گفته بودید تغییر دادم.اما selected indeix change داره نه OnSelected


فرقی نمیکنه. شما SelectedIndexChange رو با تابع مربوطه ست کنید.



کد دومی روی توی قسمتی که گفتید نوشتم. اما بعد ازDataSet که Data tBAle می نویسم Error می گیره.


اولا که باید DataSet شما به صورت TypedDataSet باشه (این موضوع باعث راحتی کار میشه، ولی اجباری برای این موضوع نیست). ثانیا منظور من از DataSet، اسم DataSet شما بود که در برنامه استفاده میکنید، نه خود کلمه DataSet. همینطور برای DataTable.

skywork
یک شنبه 28 آبان 1385, 15:21 عصر
کسی درمورد بانک اطلاعاتی اکسس با ASP.NET نمی دونه برای من پیام بگذارید
AHASBCB@YAHOO.COM
AHASBCB@GMAIL.COM