View Full Version : سوال: رفتن به خط بعد در TextBox و نمایش صحیح آن بعد از ثبت در بانک
rana-writes
دوشنبه 12 مهر 1389, 22:18 عصر
سلام
چطوری میشه تنظیمی توی TextBox انجام داد، که وقتی کاربر اینتر میزنه، موقع ثبت توی بانک هم، اینترش ثبت بشه و نمایش اطلاعات، دقیقا شبیه مطلب ثبت شده ی کاربر باشه؟
من توی برنامه م وقتی کاربرها مطلب می نویسن و بینش با اینتر میرن خط بعد، موقع نمایشش، همه چیز پشت سر هم دیده میشه
ممنون میشم راهنمایی کنین
majnun
دوشنبه 12 مهر 1389, 22:22 عصر
2 راه دارید شما
یا اینکه کلا از ادیتور استفاده کنید
یا اینکه بیاید در رویداد تکست چنج تکست باکس بررسی کنید اگه اینتر زده شد خودتون کد thml اینتر رو به انتهای متن چک باکس اضافه کنید
به همین راحتی
Mostafa_Dindar
دوشنبه 12 مهر 1389, 22:48 عصر
سلام , میتونید از این متد کمکی استفاده کنید , هنگام بازیابی از از متد httpUtility.htmlDecode استفاده کنید .
/// <summary>
/// Converts the input plain-text to HTML version, replacing carriage returns
/// and spaces with <br /> and
/// </summary>
public static string ConvertToHtml(string content)
{
content = HttpUtility.HtmlEncode(content);
if (content != null)
content = content.Replace(" ", " ").Replace(
"\t", " ").Replace("\n", "<br>");
return content;
}
موفق باشید
hamhik
دوشنبه 12 مهر 1389, 22:53 عصر
از این دستور هم می تونید استفاده کنید
TextBox1.Text.Replace("/n/r", "</br>");
rana-writes
سه شنبه 13 مهر 1389, 00:08 صبح
ممنونم از راهنماییهاتون
من از هر دو روش استفاده کردم
اما چون برای نمایش متن این تکست باکس، از گرید تمپلیت استفاده میکنم و به این شکل نمایش میدم:
<asp:LabelID="Label2"runat="server"Text='<%#Eval("ChatContent")%>'
CssClass="fontgetdatachat"></asp:Label>
اصلا کدها کار نمی کنن
یعنی حتی توی بانک هم نشون نمیده که با کد Html ثبت شده
برای این شیوه باید چکار کنم؟
hamhik
سه شنبه 13 مهر 1389, 00:27 صبح
شما به جای کنترل label از textbox استفاده کنید و حتما باید TextMode ="MultiLine" را بنویسید مشکلتون حل میشه
<asp:TextBox ID="TextBox2" TextMode ="MultiLine" runat="server" Text='<%#Eval("ChatContent") %>'></asp:TextBox>
rana-writes
سه شنبه 13 مهر 1389, 00:31 صبح
شما به جای کنترل label از textbox استفاده کنید و حتما باید TextMode ="MultiLine" را بنویسید مشکلتون حل میشه
<asp:TextBox ID="TextBox2" TextMode ="MultiLine" runat="server" Text='<%#Eval("ChatContent") %>'></asp:TextBox>
یعنی روش دیگه ای نداره؟
توی گرید نمایش اطلاعات که نمیشه از textbox استفاده کرد
Mostafa_Dindar
سه شنبه 13 مهر 1389, 00:36 صبح
ممنونم از راهنماییهاتون
من از هر دو روش استفاده کردم
اما چون برای نمایش متن این تکست باکس، از گرید تمپلیت استفاده میکنم و به این شکل نمایش میدم:
<asp:LabelID="Label2"runat="server"Text='<%#Eval("ChatContent")%>'
CssClass="fontgetdatachat"></asp:Label>
اصلا کدها کار نمی کنن
یعنی حتی توی بانک هم نشون نمیده که با کد Html ثبت شده
برای این شیوه باید چکار کنم؟
در صورتی که تونستید به روشی که گفتم متن رو به صورت صحیح در دیتابیس ذخیره کنید میتونید از این متد کمکی استفاده کنید :
/// <summary>
/// كار متد HttpUtility.HtmlDecode را انجام ميدهد
/// </summary>
/// <param name="rawText">آبجكتي كه ميخواهيد ديكد شدود</param>
/// <returns>رشته</returns>
public static string decodeText(Object rawText)
{
string txtObject = Convert.ToString(rawText);
if (!string.IsNullOrEmpty(txtObject))
return HttpUtility.HtmlDecode(txtObject);
return null;
}
همچنین از اونجایی که شما از Binding استفاده میکنید , باید به روشی زیر این متد را فراخوانی کنید ( فرض کنید متد بالا در کلاس TextUtil قرار گرفته باشد )
<asp:LabelID="Label2"runat="server" Text='<%#TextUtil.decodeText(Eval("ChatContent"))%>'
CssClass="fontgetdatachat"></asp:Label>
اینها همه در شرایطی هست که شما تونسته باشید , متن رو به صورت صحیح در دیتابیس درج کرده باشید .
من توصیه میکنم برای درج از کنترل های داده ای مثل Gridview یا DetailsView استفاده نکنید .
موفق باشید
rana-writes
سه شنبه 13 مهر 1389, 00:45 صبح
ممنونم آقای دیندار از راهنماییتون
من برای درج از گرید استفاده نمی کنم، یه تکست باکسه که توش متن می نویسم و نمایشش توی گریده
کدهایی که زحمت نوشتنش رو کشیدین امتحان میکنم :)
سپاس بسیار
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.