PDA

View Full Version : سوال: نمایش تیتر خبر با خلاصه مشروح خبر



ali.a.j
جمعه 03 شهریور 1391, 11:51 صبح
با سلام به همه دوستان
در یک قسمت سایت خبر داریم .می خواهیم از مشروح هر خبر مثلا 200 کاراکتر اول دیده شود.در دیتابیس هم سه فیلد id_news .Title و body داریم.می خواستم مثل عکس زیر شود.دوستان چه راهنمایی می کنند.

fakhravari
جمعه 03 شهریور 1391, 14:32 عصر
#region ساب استرینگ
//public static string SubStringText(object InputText, object StartIndex, object Length)
/// <summary>
/// ساب استرینگ SubStringText(Eval("n"), 0, 1000)
/// </summary>
/// <param name="InputText">رشته</param>
/// <param name="StartIndex">مقدار شروع</param>
/// <param name="Length">مقدار پایان</param>
public static string SubStringText(string InputText, int StartIndex, int Length)
{
if (InputText.Length > System.Convert.ToInt32(Length))
{ return InputText.Substring(System.Convert.ToInt32(StartIn dex), System.Convert.ToInt32(Length)); }
else { return InputText; }
}
public static string SubStringText(string InputText, int StartIndex, int Length, string EndString)
{
if (InputText.Length > System.Convert.ToInt32(Length))
{ return InputText.Substring(System.Convert.ToInt32(StartIn dex), System.Convert.ToInt32(Length)) + EndString; }
else { return InputText; }
}
// <label id="Label1" runat="server"><%# Class1.SubStringText(Eval("n"), 0, 1000)%></label>
#endregion

dorparasti
جمعه 03 شهریور 1391, 14:50 عصر
کد بالا خوبه و کار می کنه اما چند مورد میشه اصلاح بشه :

1- پارامترها رو با حروف کوچک بنویسید
2- وقتی پارامتر ها از نوع int هستند چرا در متن تابع از تابع Convert.ToInt32 استفاده شده ؟
3- چون متن دو تابع شبیه به هم هستن به جز اون قسمت EndString می تونیم توی تابع با پارامترهای کمتر ( اولی ) تابع دوم رو فراخوانی کنیم و به جای پارامتر آخری string.Empty بفرستیم . با این کار کدهای تکراری حذف میشن .
4- با این روش ممکنه آخر رشته بازگشتی از تابع ، وسط یک کلمه باشه . به نظرم بهتره بعد از substring کردن . LastIndex آخرین فاصله (" ") رو دربیارید و فقط تا اونجا رو برگردونید تا مطمئن بشید وسط یک کلمه کات نخورده .

ali.a.j
جمعه 03 شهریور 1391, 15:24 عصر
با تشکر از شما .می شه یکم بیشتر توضیح بدید و اینکه وقتی اون کد رو کپی میکنم در بعضی قسمت ها مثلا

return InputText.Substring(System.Convert.ToInt32(StartIn dex), System.Convert.ToInt32(Length));

error ld ni.
می شه کلا توضیح بدیدکجا و چجوری ازش استفاده کنم.بسیار ممنون می شم.

rana-writes
جمعه 03 شهریور 1391, 15:32 عصر
سلام
جدا كردن تعداد محدودي كاراكتر از متن اصلي با كدنويسي شايد روش خوبي باشه، ولي توجه كنين ممكنه يه وقتي اين 200 كاراكتر باعث بشه يه كلمه اي نصفه بمونه اين وسط
معمولا سايتهاي خبري يه فيلدي به اسم سوتيتر دارن كه توضيح خبر رو توي اون قرار ميدن
فكر ميكنم روش مطمئن تري باشه


موفق باشين

ali.a.j
جمعه 03 شهریور 1391, 15:42 عصر
با تشکر از شما.حرف شما کاملا درسته.اما من می خواستم با همین فیلد ها این کار رو بکنم و یه فیلد جدید اضافه نکنم و اطلاعات رو تکرار نکنم.اگه می شه یک راه حلی بگید ممنون می شم.
آیا با روشی که شما میگید راهی است که مثلا اولین پاراگراف رو به طور اتوماتیک در اون فیلد سومی بریزه که شما میگید؟

rana-writes
جمعه 03 شهریور 1391, 15:59 عصر
با تشکر از شما.حرف شما کاملا درسته.اما من می خواستم با همین فیلد ها این کار رو بکنم و یه فیلد جدید اضافه نکنم و اطلاعات رو تکرار نکنم.اگه می شه یک راه حلی بگید ممنون می شم.
آیا با روشی که شما میگید راهی است که مثلا اولین پاراگراف رو به طور اتوماتیک در اون فیلد سومی بریزه که شما میگید؟

ببينين توي سايتهاي خبري حرفه اي، اين بخش سوتيتر هيچوقت تكرار يه پاراگراف از متن اصلي خبر نيست، بلكه با اون فرق داره
حالا اگر شما اصرار دارين به اينكه حتما مثلا پاراگراف اول خبرتون توي سوتيتر بياد، فكر كنم بشه كه دو تا اديتور توي فرم درج خبرتون بندازين و تعداد كاراكترهاي بخش اول رو كه سوتيتر شماست محدود كنين و از كاربر بخواين كه پاراگراف اول خبرش رو توي اديتور اول تايپ كنه، در اين حالت موقع ثبت، اگر فيلد سومي اضافه كرده باشين، اين فيلد رو با اديتور اول پر ميكنين و براي متن اصلي خبر هم، Text هر دو تا اديتور رو توي يه String بريزين و يكجا درج كنين

fakhravari
جمعه 03 شهریور 1391, 16:27 عصر
بیشتر از حد مجاز شد با ... نقطه مشخص کنید که در تابع 2 گزاشتم EndString