PDA

View Full Version : نوشتن query string برای ادامه مطلب پست ها



tkord26
یک شنبه 20 دی 1394, 22:14 عصر
با سلام خدمت دوستان
وقتی مطلبی رو میخوام پست کنم نمیخواهم همه نوشته ها رو چاپ کنه و فقط قسمتی از اون چاپ بشه و بقیه اش در ادامه مطلب چاپ بشه..دیتابیسم با Entity Framework هستش.
از دوستان اگه همچین کدی رو نوشته در اینجا بعنوان نمونه قرار بده..ممنون

aminmousavi
یک شنبه 20 دی 1394, 23:17 عصر
سلام دوست عزیز برای اینکار معمولا یک فیلد جداگانه مثلا به اسم Abstract در نظر میگیرن که خلاصه مطلب در اون نوشته میشه و کل اون نوشته abstract در اون صفحه نمایش داده میشه . نیازی به جداکردن نوشته در متن اصلی نیست .

mohsen.nsb44
دوشنبه 21 دی 1394, 08:25 صبح
با سلام خدمت دوستان
وقتی مطلبی رو میخوام پست کنم نمیخواهم همه نوشته ها رو چاپ کنه و فقط قسمتی از اون چاپ بشه و بقیه اش در ادامه مطلب چاپ بشه..دیتابیسم با Entity Framework هستش.
از دوستان اگه همچین کدی رو نوشته در اینجا بعنوان نمونه قرار بده..ممنون

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

tkord26
سه شنبه 22 دی 1394, 13:50 عصر
شما یک خبر رو در نظر بگیر
فیلد هات باید به شکل زیر باشه
عنوانٖ و متن وادامه متن و تاریخ و ...
حالا در صفحه اولت فرضا میای هنوان و متن رو برای نمایش انتخاب میکنی
میتونی دکمه ای به عنوان ادامه متن بزاری یا در تمپلیت گریدویو از لینک باتن استفاده بکنی و اونو به عنوان بایند کنی
و با استفاده از کوئری استرینگ ایدی خبر یا عنوان خبر رو به صفحه دیگه ای ارسال بکنی و در اون صفحه تمام فیلد های خبرتو به نمایش بزاری به شرطی که عنوانش برابر کوئری استرینگی که ارسال کردی

ممنون مهندس مشکل من فقط در چاپ قسمتی از توضیحات اون خبر هستش .بعنوان مثال من فقط میخوام 200 کارکتر اول اون خبر در صفحه نمایش داده بشه و کاربر با کلیک بر روی عنوان خبر بره به صفحه دیگه و اخبار رو بخونه!حالا من قسمتی از اون کدم رو اینجا میذارم شاید منطورم رو بهتر بفهمی که چیکار کردم:

<asp:ListView runat="server" ID="lvShowListNews" DataSourceID="dsShowListNews">
<ItemTemplate>
<li>
<article class="entry-item clearfix">
<div class="article-thumb">
<a href='<%#"/Images/Image/"+Eval("Image") %>' class="hover-effect link-icon">
<img class="responsive-img" src='<%#"/Images/Thmb/"+Eval("Image") %>' alt="" />
</a>
</div>
<!--article-thumb-->
<div class="entry-content">
<span class="entry-meta">در:&nbsp;</span><span class="meta-data"><%#Eval("SubGroupTitle") %></span>
<span class="entry-meta">&nbsp;&nbsp;|&nbsp;&nbsp;</span><span class="meta-data"><%#Eval("Date") %></span>
<span class="entry-meta">&nbsp;&nbsp;|&nbsp;&nbsp;توسط:&nbsp;</span><span class="meta-data"><%#Eval("FullName") %></span>
<h3 class="entry-title"><a href='<%#string.Format("/News/{0}",Eval("NewsID")) %>'><%#Eval("NewsTitle") %> </a></h3>
<p></p>

</div>
<!--end:entry-content-->
</article>
<!--end:entry-item-->

</li>
</ItemTemplate>
</asp:ListView>
این قسمت بالایی کد هایی html خبر هستش و در زیر هم کد هی c#

protected void dsShowListNews_OnSelecting(object sender, LinqDataSourceSelectEventArgs e)
{
e.Result = (from n in db.tbl_News
orderby n.Date descending
where n.GroupID == 4
select new
{
n.NewsID,
n.NewsTitle,
n.Note,
n.Date,
n.Image,
n.tbl_User.FullName,
n.tbl_SubGroup.SubGroupTitle,
}).Take(4).ToList();
}

tkord26
سه شنبه 22 دی 1394, 13:57 عصر
سلام دوست عزیز برای اینکار معمولا یک فیلد جداگانه مثلا به اسم Abstract در نظر میگیرن که خلاصه مطلب در اون نوشته میشه و کل اون نوشته abstract در اون صفحه نمایش داده میشه . نیازی به جداکردن نوشته در متن اصلی نیست .

ممنون عزیز..من فقط دنبال اون کدی هستم که مثلا 200کارکتر از اون رو در صفحه نمایش خبر نشونم بده همین. اگه همچین کدی رو داری اینجا بذار! ممنون

mohsen.nsb44
سه شنبه 22 دی 1394, 20:36 عصر
ممنون عزیز..من فقط دنبال اون کدی هستم که مثلا 200کارکتر از اون رو در صفحه نمایش خبر نشونم بده همین. اگه همچین کدی رو داری اینجا بذار! ممنون

دوست عزیز چرا میپیچونی
دو تا فیلد در نظر بگیر در ذیتابیست
در اولین فیلدت 200 کاراکتری که مد نظرت هست رو دخیره کن و نمایش بده
و در ادامه مطلبت 200 کاراکتر باضافه فیلد دوم رو نمایش بده
باز اگر سوالی بود بفرما

tkord26
سه شنبه 22 دی 1394, 22:08 عصر
دوست عزیز چرا میپیچونی
دو تا فیلد در نظر بگیر در ذیتابیست
در اولین فیلدت 200 کاراکتری که مد نظرت هست رو دخیره کن و نمایش بده
و در ادامه مطلبت 200 کاراکتر باضافه فیلد دوم رو نمایش بده
باز اگر سوالی بود بفرما

دوباره سلام
من منظور شما رو کاملا فهمیدم و انجام دادن این کار خیلی راحته و مشکلی نداره دوست من! ولی سوال اینجاست که چرا 2تا فیلد برای یک چیز درست کنم! مثلا من یک فیلد دارم با نام Note که توش توضیحات خبر ذخیره میشه و میخوام از دل یک فیلد 200 کارکتر رو بکشم چاپ کنم در خروجی و توضیحات کامل اون فیلد رو در قسمت نمایش کل خبر نشون بدم!وگرنه که داخل 2تا فیلد ریختن و یکیشو چاپ کردن که کاری نداره! من دنبال کدی هستم که اون تعداد کارکتر مشخص رو از داخل یک فیلد بکشه بیرون چاپ کنه.بازم ممنون

notlikeothers
چهارشنبه 23 دی 1394, 09:02 صبح
درود.هم میتونی از substringاستفاده کنی و هم از regex.
همتنطوری که دوستان گفتن معمولا این کار منطقی نیست وشما فرض کن 200 کاراکتر شما بیفته وسط یه جمله ینی خلاصه خبرت میشه ناقص.مگه اینکه بیای باز اینم مدیریت کنی.

mohsen.nsb44
پنج شنبه 24 دی 1394, 12:51 عصر
دوباره سلام
من منظور شما رو کاملا فهمیدم و انجام دادن این کار خیلی راحته و مشکلی نداره دوست من! ولی سوال اینجاست که چرا 2تا فیلد برای یک چیز درست کنم! مثلا من یک فیلد دارم با نام Note که توش توضیحات خبر ذخیره میشه و میخوام از دل یک فیلد 200 کارکتر رو بکشم چاپ کنم در خروجی و توضیحات کامل اون فیلد رو در قسمت نمایش کل خبر نشون بدم!وگرنه که داخل 2تا فیلد ریختن و یکیشو چاپ کردن که کاری نداره! من دنبال کدی هستم که اون تعداد کارکتر مشخص رو از داخل یک فیلد بکشه بیرون چاپ کنه.بازم ممنون
این کاری که شما میخواین انجام بدین هم دردسر زیادی داره هم باید بسیار در کد نویسی دقت کنین که چه کاراکتر هایی و از کجا شروع و جدا بکنه و نمایش بده
درستش روشی که گفتم رو انجام بدین
اگه میخواین کارو واسه خودتون سخت بکنین دیگه خود دانی :چشمک::چشمک::چشمک::چشمک:

xsbehx
پنج شنبه 24 دی 1394, 14:36 عصر
من خودم هم معمولا از این روش استفاده می کنم که البته چنتا مشکل اینجا پیش می یاد
یکی اینکه متن شما با تگ های html در دیتابیس ذخیره می شه و شما فرض کن یک متی تو تگ p هست و 200 کارکترش رو برگردوندی و اون تگ p خودش شامل 210 کارکتره.
فکر می کنی چه اتفاقی می افته؟
تگ p بسته دیگه برگشت داده نمی شه و این یعنی خراب شدن کل استایل html شما چون یک تگ p بازی داره که تگ بسته نداره!
این مشکلات زمانی بیشتر می شه که تو نوشته شما عکس هم باشه
البته برای همه اینا راه حل هست. من کدش رو می زارم براتون :


private string GetPlainTextFromHtml(string Html)
{
return Regex.Replace(Html, "<[^>]*>", string.Empty);
}
private string SubStringText(object InputText, object StartIndex, object Length)
{
string StrText = InputText.ToString();
int StrLenght = Convert.ToInt32(Length);
if (StrText.Length > StrLenght)
{
return StrText.Substring(Convert.ToInt32(StartIndex), StrLenght) + " ... ";
}
else
{
return StrText;
}
}
public string SubStringHtml(object InputHtml, object StartIndex, object Length)
{
return SubStringText(GetPlainTextFromHtml(InputHtml.ToStr ing()), StartIndex, Length);
}


از متدها بالا هم اینطور استفاده می کنه
با فرض اینه که من یک متد select رو داخل یک کلاسی با نام clsproduct دارم


protected void Page_Load(object sender, EventArgs e)
{
clsProducts _product = new clsProducts();
lstLastProducts.DataSource = _product.Select()
.Select(c => new
{
c.fldProductId,
c.fldTitle,
fldDescription = SubStringHtml(c.fldDescription, 0, 10)
});
lstLastProducts.DataBind();
}


حالا اون کد select منه شما شاید به یک روش دیگه دستوراتتو خوندی مثلا مستقیم از یک پروسیجر استفاده کردی یا ...
اینجا فقط اگر یک فیلد از فیل توضیحات یا dexription جدول مورد نظر خالی باشه، برنامه خطا می ده. باید اونو هم خودت درست کنی که اگر خالی بود خطا نده


البته اگر فیلد توضیحات شما فقط text خام باشه و از هیچ ادیتور یا تگ html ای استفاده نکرده باشی، دیگه اینهمه کدنویسی نداره. با یک substring ساده می تونی کارتو راه بنداری.
یه پیشنهاد دیگه هم دارم، اگر می تونی حتما از روشی که دوستان گفتن استفاد کن، چون خیلی راحت تره و بعد هم به مشکلات احتمالی روشی که من گفتم و امثالهم بر نمی خوری

tkord26
پنج شنبه 24 دی 1394, 15:30 عصر
من یه کد زدم جواب گرفتم !کد رو اینجا میذارم شاید یه روز به دردتون بخوره
var list = (from n in db.tbl_News
orderby n.Date descending
where n.GroupID == 4
select new
{
n.NewsID,
n.NewsTitle,
n.Note,
n.Date,
n.Image,
n.tbl_User.FullName,
n.tbl_SubGroup.SubGroupTitle,
}).Take(10).ToList();

for (int i = 0; i < list.Count(); i++)
{
if (list[i].Note.Length > 200)
{
list[i].Note= list[i].Note.Substring(0, 200);

}
e.Result = list;
}

xsbehx
پنج شنبه 24 دی 1394, 15:46 عصر
عجب!
شما اون فیلد note یا همون توضیحات را text خام ریختید توش؟ از هیچ ادیتوری استفاده نکردید؟
اگر که بله پس ...
اگر هم که نه، این کدتون اصلا نیازی به اون حلقه هم نداشت! فکر کنم این کد هم کار می کرد براتون:


var list = (from n in db.tbl_News
orderby n.Date descending
where n.GroupID == 4
select new
{
n.NewsID,
n.NewsTitle,
Note = n.Note.Substring(0, 200),

n.Date,
n.Image,
n.tbl_User.FullName,
n.tbl_SubGroup.SubGroupTitle,
}).Take(10).ToList();

}

tkord26
پنج شنبه 24 دی 1394, 23:50 عصر
ممنون دوست عزیز ! این کدی هم که شما گفتین جواب داد...بازم ممنون