PDA

View Full Version : سوال: ایجاد مطالب با قابلیت ادامه مطلب در asp.net



malloc
شنبه 04 آذر 1391, 21:04 عصر
سلام سروران گرامی
نمیدونم این سوال مربوط به کد نویسی هست یا دیزاین اما اینجا این پست را قرار میدم.

کسی هست به من یا بده که چطور میشه داخل سایتهایی که با asp.net نوشته میشه و حالت خبری داره خبر ها را دو قسمت کرده و بخش کامل را در ادامه مطلب نشان داد.(اگه متوجه نشدید بازم توضیح بدم)

میدونم الان همه تو عزاداری امام حسین هستید(شب عاشورا) ایشالا همه عاقبتتون خیر بشه.اما لطفا کمک کنید.

bftarane
شنبه 04 آذر 1391, 22:29 عصر
لينک زير خيلي خوب توضيح داده
http://how2learnasp.net/article.aspx?code=fc9e7520-6d32-47e5-9a06-2e1c2a3f2268

hamed_hossani
یک شنبه 05 آذر 1391, 09:58 صبح
بعضی مواقع نمایش کامی یک متن ظاهر صفحات شما رو بد میکنه. برای مثال نمایش عنوان یه خبر. فرض کنید حداکثر فضایی که شما دارید 100پیکسله. ولی عنوان یک خبر بیشتر از 100 پیکسل میشه. پس باید یه تعداد کاراکتر خاص از اون رو نشون بدین...


برای نمایش قسمتی از یک متن توی یک gridview یا ... نیاز به یه تابع دارین که متن رو کوتاه کنه.

این تابع رو در قسمت کد صفحتون (cs.) بنویسید:
public string SubString(object Text, object Length)
{
string StringText = Text.ToString();
int StringLenght = int.Parse(Length.ToString());
if (StringText.Length > StringLenght )
{
return StringText.Substring(0, StringLenght ) + "... ";
}
else
{
return StringText ;
}
}

بعد Lableی که میخواین متن رو نشون بده اینطوری مقدار بدین:

<asp:Label ID="Label1" runat="server" Text='<%# SubString(Eval("Message"),100) %>'></asp:Label>

http://programmer.persianblog.ir/post/22/%D9%86%D9%85%D8%A7%DB%8C%D8%B4%20%D9%82%D8%B3%D9%8 5%D8%AA%DB%8C%20%D8%A7%D8%B2%20%D9%85%D8%AA%D9%86% 20%D8%AF%D8%B1%20%D8%B2%D9%85%D8%A7%D9%86%20%D9%84 %D9%88%D8%AF%20%D8%A7%D8%B2%20%D8%AF%DB%8C%D8%AA%D 8%A7%D8%A8%DB%8C%D8%B3%20%D9%88%20%D9%86%D9%85%D8% A7%DB%8C%D8%B4%20%D8%AF%D8%B1%20gridview%20%DB%8C% D8%A7...

bahareh1368
یک شنبه 05 آذر 1391, 19:33 عصر
به نظر من بهتره یه فیلد در دیتابیست در نظر بگیری و خلاصه خبر را در آن قرار بدی و برای نمایش خلاصه شده را نمایش بدی و با کلیک روی لینک ادامه مطلب کل خبر نشان داده بشه.
روش دوست عزیزمون hamed_hossani (http://barnamenevis.org/member.php?133368-hamed_hossani) هم درسته اما به نظرم مشکلی در استفاده از این توابع پیش میاد.فرض کنید متن کامل شما شامل 20000 کارکتر باشه و توسط این تابع قراره فقط 1000 کاراکتر آن به عنوان خلاصه خبر نشون داده بشه ممکنه هزارمین کارکتر بخشی از یک کلمه باشه و جمله نصفه نیمه تموم بشه که ظاهر خوشی نداره.

malloc
یک شنبه 05 آذر 1391, 22:39 عصر
به نظر من بهتره یه فیلد در دیتابیست در نظر بگیری و خلاصه خبر را در آن قرار بدی و برای نمایش خلاصه شده را نمایش بدی و با کلیک روی لینک ادامه مطلب کل خبر نشان داده بشه.
روش دوست عزیزمون hamed_hossani (http://barnamenevis.org/member.php?133368-hamed_hossani) هم درسته اما به نظرم مشکلی در استفاده از این توابع پیش میاد.فرض کنید متن کامل شما شامل 20000 کارکتر باشه و توسط این تابع قراره فقط 1000 کاراکتر آن به عنوان خلاصه خبر نشون داده بشه ممکنه هزارمین کارکتر بخشی از یک کلمه باشه و جمله نصفه نیمه تموم بشه که ظاهر خوشی نداره.

آخه دوست عزیز این روش دیتا بیس رو سنگین نمیکنه؟؟؟؟

hamed_hossani
یک شنبه 05 آذر 1391, 23:28 عصر
بله
ما داده های رو واکشی می کنیم که استفاده نمی کنیم.

serojjamali
چهارشنبه 10 اردیبهشت 1393, 12:52 عصر
به نظر من روش آقای
hamed_hossani (http://barnamenevis.org/member.php?133368-hamed_hossani) خیلی بهتر تا اینکه بخوای در دیتابیس یک فیلد جدید ایجاد کنی

kohyar
چهارشنبه 10 اردیبهشت 1393, 14:29 عصر
دوست عزیز شما خبر رو توی یک فیلد توی دیتابیس قرار میدی. در هنگام نمایش خلاصه خبر باید از تابع Substring استفاده کنی
ولی قبلش باید تگ های اچ تی ام ال رو حذف کنی که توسط تابع زیر میتونی اینکارو انجام بدی

public string GetTextonly(string editorcontent) { string strtext = ""; strtext = Regex.Replace(editorcontent, @"<(.|\n)*?>", string.Empty); return strtext; }
بعد هنگامی که خبر رو توی یک گرید وی نمایش دادی در رویداد GridView1_RowDataBound کد زیر رو بنویس



if (e.Row.RowType== DataControlRowType.DataRow)
{
Label lbltemp = (Label)e.Row.FindControl("Label22");
lbltemp.Text = GetTextonly(lbltemp.Text);
if (lbltemp.Text.Length>300)
{
lbltemp.Text = lbltemp.Text.Substring(0, 300)+"...";
}
Image img = (Image)e.Row.FindControl("image2");

}