PDA

View Full Version : ویرایش اطلاعات توسط Fckeditor



mohsen.nsb44
چهارشنبه 27 مرداد 1389, 18:11 عصر
سلام من اطلاعات رو از طریق تکست باکس و ادیتور fckeditor در دیتابیس ذخیره می کنم و در گرید ویو نمایش می دم حال می خوام یک دکمه یا لینک باتن در گرید ویو بزارم که وقتی روش کلیک کردم اطلاعات اون سطر ستون مثلا 2 از دیتابیس خونده و در fckeditor جهت ویرایش نمایش داده بشود لطفا راهنمایی کنید سر ماه اعزام به خدمت هستم تا 30 مرداد باید تحویل بدم گیرم فقط همینه لطفا هر چه زودتر ططف کنید کمک کنید.

rana-writes
پنج شنبه 28 مرداد 1389, 00:15 صبح
سلام
شما یه دکمه بذارین توی گریدتون و CommandArguman اون رو Id اون ستون قرار بدین
بعد با استفاده از یه QueryString اون رو پاس بدین به صفحه موردنظرتون و با استفاده از QueryString اطلاعات رو از بانک بخونین
مثلا :


<asp:TemplateField>
<ItemStyleWidth="10%"/>
<asp:ImageButtonID="Edit"CommandName="EditPost"runat="server"
CommandArgument='<%# Eval("PostID") %>'ImageUrl="~/images/Modify.png"ToolTip="ویرایش پست"/>
</ItemTemplate>
</asp:TemplateField>

این کدیه که توی گرید قرار داره
بعد توی رویداد RowCommand گرید به این شکل بنویسین:


int id = Int32.Parse((string)e.CommandArgument);
if (e.CommandName == "EditPost")
{

Response.Redirect("EditPost.aspx?PostID=" + id);
}

حالا توی رویداد PageLoad صفحه EditPost به این شکل فراخوانی کنین و ادیتورتون رو پر کنین:



PostId = Convert.ToInt32(Request.QueryString[0]);
using (SqlDataReader reader = PostDataAccess.ShowPostDetail(PostId))
{

if (reader.Read())
{

string UserEditName = reader.GetString(1);
Session["UserEdit"] = UserEditName;
string PostTitle = Convert.ToString(reader["PostTitle"]);
string Content = Convert.ToString(reader["PostContent"]);
TxtTitle.Text = PostTitle;
ASPxHtmlEditor1.Html = Content;
}
}

من از ادیتور DevExpress استفاده کردم، شما از همون ادیتور خودتون استفاده کنین و مقداردهیش کنین
فقط یادتون باشه کدهای پیج لود رو داخل


if (!IsPostBack)

قرار بدین که وقتی روی دکمه ویرایش کلیک می کنین، دوباره پیج لود فراخوانی نشه
موفق باشین
راستی PostDataAccess.ShowPostDetail این قسمت، کلاس و تابعی هست که جزییات پست رو باهاش فراخوانی کردم و خوندن اطلاعات از دیتابیسه که یادمه نمونه ش رو براتون گذاشته بودم، شما این بخش رو هر طوری که دوست دارین می تونین بنویسین فقط باید اطلاعات رو از بانک بخونین

mohsen.nsb44
شنبه 30 مرداد 1389, 16:06 عصر
سلام
شما یه دکمه بذارین توی گریدتون و CommandArguman اون رو Id اون ستون قرار بدین
بعد با استفاده از یه QueryString اون رو پاس بدین به صفحه موردنظرتون و با استفاده از QueryString اطلاعات رو از بانک بخونین
مثلا :


<asp:TemplateField>
<ItemStyleWidth="10%"/>
<asp:ImageButtonID="Edit"CommandName="EditPost"runat="server"
CommandArgument='<%# Eval("PostID") %>'ImageUrl="~/images/Modify.png"ToolTip="ویرایش پست"/>
</ItemTemplate>
</asp:TemplateField>
این کدیه که توی گرید قرار داره
بعد توی رویداد RowCommand گرید به این شکل بنویسین:


int id = Int32.Parse((string)e.CommandArgument);
if (e.CommandName == "EditPost")
{
Response.Redirect("EditPost.aspx?PostID=" + id);
}
حالا توی رویداد PageLoad صفحه EditPost به این شکل فراخوانی کنین و ادیتورتون رو پر کنین:



PostId = Convert.ToInt32(Request.QueryString[0]);
using (SqlDataReader reader = PostDataAccess.ShowPostDetail(PostId))
{
if (reader.Read())
{
string UserEditName = reader.GetString(1);
Session["UserEdit"] = UserEditName;
string PostTitle = Convert.ToString(reader["PostTitle"]);
string Content = Convert.ToString(reader["PostContent"]);
TxtTitle.Text = PostTitle;
ASPxHtmlEditor1.Html = Content;
}
}
من از ادیتور DevExpress استفاده کردم، شما از همون ادیتور خودتون استفاده کنین و مقداردهیش کنین
فقط یادتون باشه کدهای پیج لود رو داخل


if (!IsPostBack)
قرار بدین که وقتی روی دکمه ویرایش کلیک می کنین، دوباره پیج لود فراخوانی نشه
موفق باشین
راستی PostDataAccess.ShowPostDetail این قسمت، کلاس و تابعی هست که جزییات پست رو باهاش فراخوانی کردم و خوندن اطلاعات از دیتابیسه که یادمه نمونه ش رو براتون گذاشته بودم، شما این بخش رو هر طوری که دوست دارین می تونین بنویسین فقط باید اطلاعات رو از بانک بخونین
سلام دوست عزیز من اطلاعاتم رو فرستادم به صفحه ای که می خوام ویرایش بشه در اون صفحه وقتی PostDataAccess رو می خوام تایپ کنم نمیشه همونطور که خودتون می دونید اگه لیبل رو می خواین تایپ کنین خود ویژوال استدیو واستون میارتش که با کلیک روش نوشته می شه تو صفحتون اما زمانی که PostDataAccess رو می خوام تایپ کنم انگار وجود نداره لطفا راهنمایی کنید که ایا چیزی باید اضافه بکنم یا خیر
فقط زمان ندارم لطفا زود
در ضمن من از نسخه 2005 ویژوال استدیو استفاده می کنم

mohsen.nsb44
شنبه 30 مرداد 1389, 16:22 عصر
لطفا اگه از دوستان کسی روش ساده و مفید دیگه ای داره هم بزاره

rana-writes
شنبه 30 مرداد 1389, 21:53 عصر
سلام دوست عزیز من اطلاعاتم رو فرستادم به صفحه ای که می خوام ویرایش بشه در اون صفحه وقتی PostDataAccess رو می خوام تایپ کنم نمیشه همونطور که خودتون می دونید اگه لیبل رو می خواین تایپ کنین خود ویژوال استدیو واستون میارتش که با کلیک روش نوشته می شه تو صفحتون اما زمانی که PostDataAccess رو می خوام تایپ کنم انگار وجود نداره لطفا راهنمایی کنید که ایا چیزی باید اضافه بکنم یا خیر
فقط زمان ندارم لطفا زود


خب فکر کنم واضح باشه PostDataAccess اسم یه کلاسه و ShowPostDetails هم یه تابع که متعلق به اون کلاسه
شما نیاز نیست عین این کدها رو تو برنامه تون کپی کنین
بهتره ازشون ایده بگیرین

ضمن اینکه انتهای پستم نوشتم:


راستی PostDataAccess.ShowPostDetail این قسمت، کلاس و تابعی هست که جزییات پست رو باهاش فراخوانی کردم و خوندن اطلاعات از دیتابیسه که یادمه نمونه ش رو براتون گذاشته بودم، شما این بخش رو هر طوری که دوست دارین می تونین بنویسین فقط باید اطلاعات رو از بانک بخونین

حالا که اطلاعاتتون رو فرستادین، کافیه ادیتور یا لیبلهاتون رو با اون پر کنین دیگه و نمایش بدین به کاربر
بعد هم یه دکمه ویرایش تو صفحه تون بندازین و کد آپدیت رو بنویسین
الان مشکلتون کجاست؟

mohsen.nsb44
شنبه 30 مرداد 1389, 23:00 عصر
خب فکر کنم واضح باشه PostDataAccess اسم یه کلاسه و ShowPostDetails هم یه تابع که متعلق به اون کلاسه
شما نیاز نیست عین این کدها رو تو برنامه تون کپی کنین
بهتره ازشون ایده بگیرین

ضمن اینکه انتهای پستم نوشتم:

حالا که اطلاعاتتون رو فرستادین، کافیه ادیتور یا لیبلهاتون رو با اون پر کنین دیگه و نمایش بدین به کاربر
بعد هم یه دکمه ویرایش تو صفحه تون بندازین و کد آپدیت رو بنویسین
الان مشکلتون کجاست؟
نگاه کنید من اطلاعات رو با کوئری ارسال می کنم و هیچ مشکلی ندارم مشکلم اینجاست که چطوری اطلاعاتی که به صفحه ویرایش ارسال کردم رو در ادیتورم نمایش بدم من قبلا برای نمایش یک اطلاعات در صفحه بعد در یک گرید ویو از کد زیر استفاده می کردم


SqlDataSource1.SelectCommand = "select mozo,matn,tarikh from news where id='" + Request.Params[0].ToString() + "' ";


گرید ویو رو به sqldatasource متصل می کردم الان چطور می تونم ادیتورم رو به sqldatasource متصل کنم تا اطلاعاتم رو نمایش بده؟؟؟؟؟؟؟؟؟؟؟؟؟

mohsen.nsb44
یک شنبه 31 مرداد 1389, 10:35 صبح
البته اینم بگم که میشه از ویرایش خود گرید ویو استفاده کرد اما همان طور که می دونید چون از ادیتور استفاده کردم موقع ویرایش در گرید ویو تگ های html هم دیده می شوند که کارو سخت میکنه و اصلا هم جالب نیست بهترین راه همونه که اطلاعات درون خود ادیتور نمایش داده بشه تا ویرایش بشه اگه لطف کنید امروز مشکلمو حل کنید بی نهایت ممنون می شم
اخه فردا صبح راهی پادگان عجب شیر هستم.
ممنون از همه دوستان

rana-writes
یک شنبه 31 مرداد 1389, 12:21 عصر
این تاپیک و خصوصا پست 5 ش رو ملاحظه کنینhttp://barnamenevis.org/forum/showthread.php?t=232641

دومین مطلب هم اینکه اصلا نمیشه ادیتور رو به SqldataSource متصل کرد چون ادیتور Propertyای به اسم DataSource نداره، مثل گرید نیست
سومین مطلب هم اون ویرایشی که توی ادیتور هست، برای ویرایش متنیه که شما همین لحظه نوشتین
شما دارین مسئله رو خیلی پیچیده می کنین
Query رو که نوشتین با توجه به لینکی که براتون گذاشتم اطلاعات رو توسط یه SqldataReader بخونین
این لینکی که براتون گذاشتم رو حتما ببینین ، مشکلتون رو حل میکنه چون کاملا توش توضیح دادم