PDA

View Full Version : سئوال- نمایش قسمتی از متن در صفحه اصلی سایت



oosara
چهارشنبه 18 بهمن 1391, 00:07 صبح
سلام
من یک وب سایت در محیط net.asp به زبان c# طراحی کردم یک بخش به نام اخبار داره که الان میخوام قسمتی از متن مثلا یک پاراگراف از خبر در صفحه اصلی نشان داده بشه و کابر بتونه با کلیک روی ادامه خبر به کل متن دسترسی پیدا کنه ممنون میشم کسی بهم کمک کنه آیا باید از کد css استفاده کنم؟؟ خودم میخواستم از substring استفاده کنم ولی چون اخبار از دیتا بیس خوانده میشه واز دیتالیست برای نمایش اخبار استفاده کردم نمیتونم substring رو به دیتالیست اضافه کنم
لطفا راهنمایی کنید

Keramatifar
چهارشنبه 18 بهمن 1391, 10:52 صبح
برای اضافه کردن substring به datalist مشکلی وجود ندارد. می توانید از data binding در asp.net استفاده کنید:
<%#Eval %>
اگر در بخش C# سوالتان را مطرح کنید بهتر می توانند به شما کمک کنند

oosara
چهارشنبه 18 بهمن 1391, 11:02 صبح
برای اضافه کردن substring به datalist مشکلی وجود ندارد. می توانید از data binding در asp.net استفاده کنید:
<%#Eval %>
اگر در بخش C#‎‎ سوالتان را مطرح کنید بهتر می توانند به شما کمک کنند


ممنون ولی هنوز نتیجه نگرفتم من از این دستور که گفتید استفاده کردم ولی substring رو شناسایی نمیکند

meisam3322
چهارشنبه 18 بهمن 1391, 21:22 عصر
اگر شما از gridview یا datalist و ... استفاده می کنین. میشه یه templatefield ایجاد کنین . حالا مثلا برای یه itemtemplate اون میتونین از ترکیب eval و substring ، تعداد کارکتر محدود رو نمایش بدین :

در این مثال فرض شده که اگر مجموع کارکترهای رشته مورد نظر از 200 کارکتر بیشتر بود ، بیاد فقط 200 کارکتر اول رشته رو نمایش بده .



<%# DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Length > 200 ?


در کد بالا فرض شده که مقادیر فیلد txtTitle رو از پایگاه داده قرار است خوانده شود. علامت سوال همان if یا شرط ما می باشد. در ادامه :



DataBinder.Eval(Container.DataItem, "txtTitle").ToString().Substring(0,200) :


با استفاده از دستور substring ، کارکتر به تعداد 200 از رشته جدا می گردد. علامت : به معنای همون then در شرط می باشد. در ادامه داریم که در غیر اینصورت ، یعنی اگر از 200 کارکتر کمتر بود بیاد رشته رو به صورت کامل نمایش بده ، یا ذهدی کنه:



DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Substring(0,DataBinder.Eval(Container.D ataItem,"txtTitle").ToString().Length)%>


یا



DataBinder.Eval(Container.DataItem,"VoucherNote"). ToString()%>


به همین راحتی ... امیدوارم مشکلت حل شده باشه . من کد کامل رو برات میزارم :




<asp:TemplateField HeaderText="Note" ItemStyle-Width="110">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Length > 20 ?
DataBinder.Eval(Container.DataItem, "txtTitle").ToString().Substring(0,20) :
DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Substring(0,DataBinder.Eval(Container.D ataItem,"txtTitle").ToString().Length)%>
</ItemTemplate>
</asp:TemplateField>

b.paseban
چهارشنبه 18 بهمن 1391, 23:17 عصر
سلام بر شما.
میتونی با استفاده از کد زیر هم این کار رو انجام بدی


Select *
[NewsID],
[Title],
substring([Body], 0, 500)[Body],
[AddedDate],
[AddedIp],
[CountViewed],
[Status]
From Tbl_News

hashemi85sep
چهارشنبه 18 بهمن 1391, 23:58 عصر
سلام دوست عزیز
میتونی یه نگاه هم به این بندازی شاید این هم بدردت بخوره
http://barnamenevis.org/showthread.php?380574-انتخاب-بخشی-از-متن-داخل-فیلد-جدول؟

alihassanabadi
پنج شنبه 19 بهمن 1391, 08:33 صبح
سلام
من فکر میکنم جواب کل دوستان اشتباهه
در یک صورت میتونه درست باشن
در صورتی که شما از متن ساده استفاده کنید.
حالا فرض کنید برنامه نویس واسه گرفتن متن و ثبت اون از تکست ادیتورهای معروف مثل ckEditor یا FCKeditor یا TextEditor و ....
استفاده کرده باشد درنتیجه متن به صورد اچتمل ذخیره میشه
مثل این


سلام<br />
<strong>من فکر میکنم جواب کل دوستان اشتباهه</strong><br />
<table border="1" cellpadding="1" cellspacing="1" style="width: 500px;">
<tbody>
<tr>
<td>
در یک صورت میتونه درست باشن</td>
<td>
&nbsp;</td>
</tr>
<tr>
<td>
در صورتی که شما از متن ساده استفاده کنید.<br />
<hr />
<br />
<strong>حالا فرض کنید برنامه نویس واسه گرفتن متن و ثبت اون از تکست ادیتورهای معروف مثل ckEditor یا FCKeditor یا </strong>TextEditor و ....<br />
<u><strong><span style="background-color:#ff0000;">استفاده کرده باشد درنتیجه متن به صورد اچتمل ذخیره میشه</span></strong></u></td>
<td>
&nbsp;</td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
</tr>
</tbody>
</table>
<br />

حالا اگه شما SubString بزنید 200 کارکتر نمایش بده
ممکنه به یه تگ برخورد کنه و اونو کات کنه مثل able>
دو حالت رخ میده
1- کل خروجی به هم میریزه
2- خروجی صفحه اصلا از لحاظ ساختاری valid نیست

دوست عزیز به نظر من بهترین راه اینه که یه فیلد به عنوان خلاصه ای از متن رو طراحی کنی و اون خلاصه رو نمایش بدی بعد که ادامه رو زد
فیلدی که حاوی متن کامل رو نمایش بدی بازم میگم مگه اینکه فرمت اون متن اچتمل نباشه .

oosara
پنج شنبه 19 بهمن 1391, 09:25 صبح
سلام
من فکر میکنم جواب کل دوستان اشتباهه
در یک صورت میتونه درست باشن
در صورتی که شما از متن ساده استفاده کنید.
حالا فرض کنید برنامه نویس واسه گرفتن متن و ثبت اون از تکست ادیتورهای معروف مثل ckEditor یا FCKeditor یا TextEditor و ....
استفاده کرده باشد درنتیجه متن به صورد اچتمل ذخیره میشه
مثل این


سلام<br />
<strong>من فکر میکنم جواب کل دوستان اشتباهه</strong><br />
<table border="1" cellpadding="1" cellspacing="1" style="width: 500px;">
<tbody>
<tr>
<td>
در یک صورت میتونه درست باشن</td>
<td>
&nbsp;</td>
</tr>
<tr>
<td>
در صورتی که شما از متن ساده استفاده کنید.<br />
<hr />
<br />
<strong>حالا فرض کنید برنامه نویس واسه گرفتن متن و ثبت اون از تکست ادیتورهای معروف مثل ckEditor یا FCKeditor یا </strong>TextEditor و ....<br />
<u><strong><span style="background-color:#ff0000;">استفاده کرده باشد درنتیجه متن به صورد اچتمل ذخیره میشه</span></strong></u></td>
<td>
&nbsp;</td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
&nbsp;</td>
</tr>
</tbody>
</table>
<br />

حالا اگه شما SubString بزنید 200 کارکتر نمایش بده
ممکنه به یه تگ برخورد کنه و اونو کات کنه مثل able>
دو حالت رخ میده
1- کل خروجی به هم میریزه
2- خروجی صفحه اصلا از لحاظ ساختاری valid نیست

دوست عزیز به نظر من بهترین راه اینه که یه فیلد به عنوان خلاصه ای از متن رو طراحی کنی و اون خلاصه رو نمایش بدی بعد که ادامه رو زد
فیلدی که حاوی متن کامل رو نمایش بدی بازم میگم مگه اینکه فرمت اون متن اچتمل نباشه .

من از روش شماره 4 استفاده کردم درسته تعداد تگ ها رو هم جزو 200 کاراکتر حساب میکنه ولی تگها رو در صفحه اصلی نمایش نمیده پس میشه ازش استفاده کرد که مجبور به درست کردن فیلد جدید در دیتابیس و سنگین شدن دیتابیس نشیم

oosara
پنج شنبه 19 بهمن 1391, 09:27 صبح
اگر شما از gridview یا datalist و ... استفاده می کنین. میشه یه templatefield ایجاد کنین . حالا مثلا برای یه itemtemplate اون میتونین از ترکیب eval و substring ، تعداد کارکتر محدود رو نمایش بدین :

در این مثال فرض شده که اگر مجموع کارکترهای رشته مورد نظر از 200 کارکتر بیشتر بود ، بیاد فقط 200 کارکتر اول رشته رو نمایش بده .



<%# DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Length > 200 ?


در کد بالا فرض شده که مقادیر فیلد txtTitle رو از پایگاه داده قرار است خوانده شود. علامت سوال همان if یا شرط ما می باشد. در ادامه :



DataBinder.Eval(Container.DataItem, "txtTitle").ToString().Substring(0,200) :


با استفاده از دستور substring ، کارکتر به تعداد 200 از رشته جدا می گردد. علامت : به معنای همون then در شرط می باشد. در ادامه داریم که در غیر اینصورت ، یعنی اگر از 200 کارکتر کمتر بود بیاد رشته رو به صورت کامل نمایش بده ، یا ذهدی کنه:



DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Substring(0,DataBinder.Eval(Container.D ataItem,"txtTitle").ToString().Length)%>


یا



DataBinder.Eval(Container.DataItem,"VoucherNote"). ToString()%>


به همین راحتی ... امیدوارم مشکلت حل شده باشه . من کد کامل رو برات میزارم :




<asp:TemplateField HeaderText="Note" ItemStyle-Width="110">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Length > 20 ?
DataBinder.Eval(Container.DataItem, "txtTitle").ToString().Substring(0,20) :
DataBinder.Eval(Container.DataItem,"txtTitle"). ToString().Substring(0,DataBinder.Eval(Container.D ataItem,"txtTitle").ToString().Length)%>
</ItemTemplate>
</asp:TemplateField>



ازتون ممنون با همین کد مشکلم حل شد

alihassanabadi
پنج شنبه 19 بهمن 1391, 09:53 صبح
من از روش شماره 4 استفاده کردم درسته تعداد تگ ها رو هم جزو 200 کاراکتر حساب میکنه ولی تگها رو در صفحه اصلی نمایش نمیده پس میشه ازش استفاده کرد که مجبور به درست کردن فیلد جدید در دیتابیس و سنگین شدن دیتابیس نشیم
چرا اگه اشتباه رخ بده نمایش میده
مثلا اینجوری
iv>hello
من این موضوع رو خیلی تست گرفتم
در کل گاه نمایش نده کل استاندارد و فرمت اچتمل سایت اشتباه میشه
بازم تو پست های دیگه گفتم از طرف w3 تایید نمیشه
و کلا روی سئو تاثیر منفی میزاره
پس درنتیجه اگه میخواین از ادیتورها استفاده کنید
بهتره از همون فیلد خلاصه استفاده کنید.

meisam3322
شنبه 21 بهمن 1391, 11:52 صبح
با سلام،

دوست عزیزمون به نکته خوبی اشاره کردن . در کد پست شماره 4 ، من فرض کردم که متن شما ساده بوده و بدون هیچ تگی می باشد. اگر از تگ های HTML استفاده شده باشه ، خوب امکان دارد مشکل ایجاد کنه. یه راه اینه که بییاین یه فیلد دیگه به جدولتون اضافه کنین و خلاصه متن رو در زمان ذخیره سازی در بانک در اون قرار بدین. راه دوم که به نظر من میرسه اینه که - اگر متن دارای تگ های HTML باشد - اول تمام تگ های HTML رو از رشته حذف کنیم ، در مرحله بعد خلاصه اون رو نمایش بدیم.