View Full Version : پاک کردن یک رکورد از جدول با gridview
shahin.khordadi
سه شنبه 05 دی 1391, 14:02 عصر
سلام
من با استفاده از linq اطلاعات یه جدول رو تو gridview نشون دادم.حالا میخوام یه ستون دیگه به جدول اضافه کنم و با استفاده ار itemTemplate یه عکسی رو نشون بدم که وقتی روش کلیک میشه اون سطر از دیتا بیس پاک بشه.
1. چجور ستون ID رو hidden کنم؟
2. چجور مقدار ستون ID رو به دست بیارم واسه پاک کردن اون رکورد.
3. کلا چجور میشه مستقیم از خود gridview رکورد رو ویرایش کنم.
ممنون میشم اگه یه توضیح کامل و جامع بهم بدید یا یه لینک اموزشی واسم بذارید.
هرچی سرچ کردم و کدایی که پیدا کردم رو نتونستم استفاده کنم.مبتدی هستم.ممنون:قلب::خجالت:
AmirGhasemi
سه شنبه 05 دی 1391, 14:25 عصر
سلام
براي هيدن كردن ستون IDمي تواني از كنترل hiddenField خود ويژوال استودوي استفاده كني
اما براي ويرايش و حذف كردن بايد كارهاي خاصي را انجام دهي كه كدش را در زير مي ذارم:
اول اينكه بايد خاصيت هايي به اون دو تا فيلد حذف و ويرايشت اضافه كني
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgbEdit" AlternateText="ويرايش" CommandName="Edit" CommandArgument='<%# Eval("IDproperty") %>'
ImageUrl="~/Images/UI/edit-icon.png" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgbDelete" AlternateText="حذف" ImageUrl="~/Images/UI/Remove-icon.png"
CommandName="Delete" CommandArgument='<%# Eval("IDproperty") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
و حالا بايد ايونت زير را اجرا كني:
f (e.CommandName == "Delete")
{
intID = System.Convert.ToInt32(e.CommandArgument);
blByDefault.Delete(intID);
}
else if (e.CommandName == "Edit")
{
}
shahin.khordadi
سه شنبه 05 دی 1391, 18:24 عصر
سلام
براي هيدن كردن ستون IDمي تواني از كنترل hiddenField خود ويژوال استودوي استفاده كني
اما براي ويرايش و حذف كردن بايد كارهاي خاصي را انجام دهي كه كدش را در زير مي ذارم:
اول اينكه بايد خاصيت هايي به اون دو تا فيلد حذف و ويرايشت اضافه كني
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgbEdit" AlternateText="ويرايش" CommandName="Edit" CommandArgument='<%# Eval("IDproperty") %>'
ImageUrl="~/Images/UI/edit-icon.png" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgbDelete" AlternateText="حذف" ImageUrl="~/Images/UI/Remove-icon.png"
CommandName="Delete" CommandArgument='<%# Eval("IDproperty") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
و حالا بايد ايونت زير را اجرا كني:
f (e.CommandName == "Delete")
{
intID = System.Convert.ToInt32(e.CommandArgument);
blByDefault.Delete(intID);
}
else if (e.CommandName == "Edit")
{
}
ممنون که راهنمایی کردید.اما مشکل من اینه که اصلا واسم e.CommandName نمیاد که حالا چک کنم
shahin.khordadi
سه شنبه 05 دی 1391, 21:11 عصر
کسی نیست کمکم کنه؟ خیلی فوری بهش نیاز دارم. همه پروژه من به این اموزش بستگی داره :گریه:
ali9698
سه شنبه 05 دی 1391, 22:21 عصر
سلام
من با استفاده از linq اطلاعات یه جدول رو تو gridview نشون دادم.حالا میخوام یه ستون دیگه به جدول اضافه کنم و با استفاده ار itemTemplate یه عکسی رو نشون بدم که وقتی روش کلیک میشه اون سطر از دیتا بیس پاک بشه.
1. چجور ستون ID رو hidden کنم؟
2. چجور مقدار ستون ID رو به دست بیارم واسه پاک کردن اون رکورد.
3. کلا چجور میشه مستقیم از خود gridview رکورد رو ویرایش کنم.
ممنون میشم اگه یه توضیح کامل و جامع بهم بدید یا یه لینک اموزشی واسم بذارید.
هرچی سرچ کردم و کدایی که پیدا کردم رو نتونستم استفاده کنم.مبتدی هستم.ممنون:قلب::خجالت:
من از linq استفاده نمیکنم و در زمینه Linq مبتدی هستم اما اگر به طور عادی gridview رو به یه sql data source وصل کنی از این روش میتونی استفاده کنی. البته شاید با روش linq هم کار بده
شما ستون آی دی رو کلا وارد گریدویو نکنید که بعد بخوای هیدن کنی.
توی همون ستونی که میخوای اضافه کنی به جای این که عکس ساده بزاری image button بزار و خصوصیت command argument ش رو bind کن به اون ID
بعد موقع کلیک کردن روی imagebutton توی رویداد command نه رویداد click میتونی مقدار command argument هر image button رو بخونی و استفاده کنی به این صورت:
textbox1.text=e.commandargument.tostring();
جواب 3 رو متاسفانه نمیدونم!
shahin.khordadi
سه شنبه 05 دی 1391, 22:55 عصر
همین کاری که کفتی رو کردم.اما error میده باز.
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
ali9698
سه شنبه 05 دی 1391, 23:08 عصر
راستش من که چیزی از این ارور متوجه نشدم. حرفه ای ها نظری ندارن؟! چرا بقیه کمک نمیکنید؟! همین الان سه نفر دارن این تایپک رو نگاه میکنن آخه!!!:ناراحت:
shahin.khordadi
سه شنبه 05 دی 1391, 23:10 عصر
نوبت به من رسید چشمه خشک شد. :دی
shahin.khordadi
سه شنبه 05 دی 1391, 23:13 عصر
<asp:GridView ID="adminsGV" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="removeManager" runat="server" ImageUrl="~/admin/img/remove.png" CommandArgument='<%# Bind("id") %>' CommandName='<%# "delete" %>' OnCommand="removeManager" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void removeManager(object sender, CommandEventArgs e)
{
if (e.CommandName == "delete")
{
int ID = Convert.ToInt32(e.CommandArgument);
//Response.Write(ID);
user x = DB.users.Where(c => c.id == ID).Single();
DB.users.DeleteOnSubmit(x);
DB.SubmitChanges();
fill();
}
}
این کدمه
ali9698
چهارشنبه 06 دی 1391, 00:04 صبح
<asp:GridView ID="adminsGV" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="removeManager" runat="server" ImageUrl="~/admin/img/remove.png" CommandArgument='<%# Bind("id") %>' CommandName='<%# "delete" %>' OnCommand="removeManager" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void removeManager(object sender, CommandEventArgs e)
{
if (e.CommandName == "delete")
{
int ID = Convert.ToInt32(e.CommandArgument);
//Response.Write(ID);
user x = DB.users.Where(c => c.id == ID).Single();
DB.users.DeleteOnSubmit(x);
DB.SubmitChanges();
fill();
}
}
این کدمه
توی قسمت اول کدها که فکر نکنم مشکلی باشه. البته نمیدونم commandname رو واسه چی و به کجا bind کردی؟! بهتره نباشه.
اما توی قسمت دوم کدها: e.commandargument خروجی از نوع object میده و باید هر جا استفاده میکنی ادامه اش ToString بنویسی. شاید مشکل حل بشه
ali9698
چهارشنبه 06 دی 1391, 00:05 صبح
راستی واسه اینکه بفهمی ارور از کجاست از breakpoint استفاده کن. واسه همه خط ها breakpoint بزار. ببین کدوم خط باعث ارور میشه
shahin.khordadi
چهارشنبه 06 دی 1391, 00:13 صبح
مشکل از جای دیگه اب میخورد.این رو باید تو web.config اضافه می کردم.
<system.web>
<pages buffer="true"
enableEventValidation="false">
</pages>
</system.web>
ali9698
چهارشنبه 06 دی 1391, 00:16 صبح
مشکل از جای دیگه اب میخورد.این رو باید تو web.config اضافه می کردم.
<system.web>
<pages buffer="true"
enableEventValidation="false">
</pages>
</system.web>
یعنی با این مشکل حل شد؟!
اگه شد که خدا رو شکر :لبخندساده:
ali9698
چهارشنبه 06 دی 1391, 00:18 صبح
راستی اون شرطی که گذاشتی و باهاش commandname رو چک میکنی فکر کنم اضافی باشه.
فکر کلا commandname و این شرط رو نیاز نداشته باشی
shahin.khordadi
چهارشنبه 06 دی 1391, 00:32 صبح
اره.مشکلش همین بود.شاید 4.5 اینجوریه.اون command name هم اگه نباشه باز کار میکنه.اما فکر کنم اگه پای چند تا imageButton بیاد وسط لازم باشه.ممنون.شما هم خیلی کمک کردی :بوس:
ali9698
چهارشنبه 06 دی 1391, 00:35 صبح
اره.مشکلش همین بود.شاید 4.5 اینجوریه.اون command name هم اگه نباشه باز کار میکنه.اما فکر کنم اگه پای چند تا imageButton بیاد وسط لازم باشه.ممنون.شما هم خیلی کمک کردی :بوس:
خواهش میکنم. اگه منظورت اینه که بازم ستون میخوای اضافه کنی و بازم imagebutton خوب رویداد oncommand اونا هم جداگانه هستش و بازم فکر کنم نیازی به چک کردن command name نباشه
البته
صلاح کار خویش خسروان دانند :چشمک:
shahin.khordadi
چهارشنبه 06 دی 1391, 10:58 صبح
راست میگی.حالا واسه چی گذاشتن پس؟ تو کتابا هم ک دیدم استفاده شده
ali9698
چهارشنبه 06 دی 1391, 16:42 عصر
چی بگم والا؟! احتمالا کاربردش فقط توی کتاباست...:چشمک:
fakhravari
چهارشنبه 06 دی 1391, 18:29 عصر
خطای پست 6 به دلیل دوباره پر شدن گرید اتفاق می افتد.
باید از !ispostback استفاده کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.