PDA

View Full Version : سوال: درج ادامه مطلب



aghanaser
جمعه 04 دی 1388, 15:34 عصر
سلام دوستان ببخشيد يك سوال داشتم.من يك سايت خبري ساختم كه تو صفحه اولش از grid view استفاده كردم و ديتا بايندينگ و....

جديدا به يك مشكل برخوردم .توي تمپليت گريد ويو يك گزينه گذاشتم به اسم ادامه مطلب و توي بانك اطلاعاتيم هم اين گزينه رو در نظر گرفتم.ولي ميخوام وقتي اين كليد زده ميشه id مطلب را بگيره و توي يك صفحه ثابت مثلا news.aspx?id=?j فيلد content از اون آيدي نمايش داده بشه.عين سيستم هاي وبلاگدهي. ميشه منو راهنمايي كنين..(درضمن من مبتدي هستم.)

m_kalantar.cs
جمعه 04 دی 1388, 16:16 عصر
سلام
اگه ID اون خبر مثلا در یک label به نام label_ID در گرید ویو شما بایند شده باشد و خاصیت گریدویو را هم به ID خبر مرتبطکرده باشید برای دسترسی به ID خبر کلیک شده میتوانید از دستور زیر استفاده کنید
label Label_ID=(label)gridview1.rows[gridview1.selecteddatakey].findcontrol("label_id");

aghanaser
جمعه 04 دی 1388, 19:31 عصر
ممنون بخاطر پاسخ, ولي دوست عزيز من همونطور كه گفتم يكم مبتدي هستم نميدونم اين كد را براي لينك ادامه مطلب(خود كليد) بنويسم يا توي اون صفحه نمايش ادامه مطلب يك ليبل يا چيزي درست كنم و براي اون بنويسم؟؟؟ ودر ضمن من به خاطر ترتيب خبرها از شمارشگر معكوس براي id استفاده مي كنم به همين خاطر اونو توي گريدويو نمايش نميدم.اگه خواستم از اين روش استفاده كنم مي تونم label id را بزارم و visible اونرا false كنم..؟؟؟
اگه يكم بيشتر توضيح بديد يا اگه مثالي داشته باشيد برام خيلي ازتون ممنون ميشم چون واقعا بهش نياز دارم..

clover
جمعه 04 دی 1388, 20:50 عصر
تونم label id را بزارم و visible اونرا false كنم..؟؟؟
بدون این کار هم می تونید . کافیه فیلد آیدی را هم به همراه بقیه فیلد ها از بانک بخونید (در کنترل منبع داده ای تنظیم کنید) بعد در گرید به جای نمایش این فیلد در یک لیبل، به این صورت ازش استفاده کنید:
به مد source برید و در کد های گرید مربوطه قبل از تگ <Columns/> این قطعه کد را اضافه کنید :

<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink ID="hlFullNews" runat="server" NavigateUrl='<%# Eval("NewsID", "news.aspx?id={0}") %>' Text="ادامه مطلب ..." ForeColor="#444444" />
</ItemTemplate>
</asp:TemplateField>

توضیح اینکه شما با این کد یک TemplateField به گرید اضافه می کنید و در این TemplateField یک HyperLink قرار می دهید که شما را به آدرس مربوطه می بره.

aghanaser
جمعه 04 دی 1388, 23:33 عصر
ممنون دوست عزيز من جواب را گرفتم .ولي يك سوال ديگه پيش اومد اگه اين گريدويو توي index .aspx باشه و من بخوام ادامه مطلب توي news.aspx اجرا بشه نبايد تو صفحه ي news.aspx ليبل يا چيزي بزارم تا فيلد ادامه مطلب از بانكم توي اون نمايش پيدا كنه؟

clover
جمعه 04 دی 1388, 23:47 عصر
نبايد تو صفحه ي news.aspx ليبل يا چيزي بزارم تا فيلد ادامه مطلب از بانكم توي اون نمايش پيدا كنه؟

مسلما باید این کار را انجام بدید، اما نحوه ی پیاده سازی به خودتون بستگی داره (با لیبل یا کنترل ها و تگ های html و css و ...)

aghanaser
شنبه 05 دی 1388, 00:00 صبح
ببخشيد نتوتنستم سوالم را درست بگم اين اجزا (ليبل نمايش دهنده ادامه خبر) توي صفحه مقصد بايد به پايگاه بايند بشن يا كد خاصي براشون نوشته بشه؟؟؟

clover
شنبه 05 دی 1388, 00:06 صبح
بله
شما باید بسته به نیازتون از یک کنترل محدوده داده ای (مانند FormView) استفاده کنید .

aghanaser
شنبه 05 دی 1388, 23:29 عصر
سلام يك سوال داشتم
من توصفحه اول سايتم يك ديتا گريد دارم كه توش يك فيلد ادامه مطلب گذاشتم و navigate اون را اينطور نوشتم:

<%# Eval("NewsID", "news.aspx?id={0}") %>
حالا تو صفحه news.aspx آيدي درست پاس ميشه ولي نميدونم كه تو اين صفحه ديتا گريد بزارو يا ديتا ليست يا..؟؟؟؟
يعني گذاشتم و يك ليبل ايجاد كردم و بايندش كردم به فيلد content از بانك اطلاعاتي .البته با جنرال {0} ولي content آيدي پاس شده را نشون نميداد بلكه, همه را نشون ميداد.چكار كنم كه فقط مختص آيدي پاس شده باشه؟

clover
شنبه 05 دی 1388, 23:52 عصر
چكار كنم كه فقط مختص آيدي پاس شده باشه؟
در بخش تنظیمات کنترل منبع داده ای (sqlDataSource) بر روی دکمه WHERE کلیک کنید و در پنجره ظاهر شده به این شکل تنظیمات را اعمال کنید:

Column: NewsID
Operator: =
Source: QueryString
QueryString field: id


ولي نميدونم كه تو اين صفحه ديتا گريد بزارو يا ديتا ليست يا..؟؟؟؟
برای نمایش تکی رکورد با جزییات، کنترل های FormView و DetailsView مناسب هستند.

A.S.Roma
یک شنبه 06 دی 1388, 11:36 صبح
من برای اینکه از خبر اصلی مثلا" 200 کاراکترشو به کاربر نشون بده بعد لینک ادامه مطلب رو بذاره از رویداد OnDataBinding لیبل استفاده می کنم و از طریق Substring یک تعداد خاصی از کاراکتر رو می خونم .
روش بهینه تر وجود نداره !؟

چون اینجوری اگر n تا خبر باشه n بار یک Event اتفاق می افته.

clover
یک شنبه 06 دی 1388, 17:39 عصر
روش بهینه تر وجود نداره !؟
از روشی که در سرویس های وبلاگ مورد استفاده قرار می گیره ، استفاده کنید.
یک فیلد برای مطلب و یک فیلد دیگر برای ادامه مطلب، و گرنه با روش شما، به غیر از موردی که ذکر کردید تمام مطلب از بانک واکشی میشه و ترافیک و حافظه ی زیادی به هدر میره.