PDA

View Full Version : اضافه کردن تیک delete و ... به grid view



nazila_jon
پنج شنبه 19 دی 1387, 16:02 عصر
بچه ها
میخوام بتونم این تیک رو اضافه کنم به گریدم
چه طوری این کار رو کنم؟؟
بعد سوال دیگه این که اگر این تیک رو اضافه کنم دیگه احتیاج به برنامه نویسی ندارم؟؟
مثلا اگه تیک delete اضافه بشه دیگه نباید برنامه شو بنویسم؟؟

http://tinypic.ws/files/82qydfmri2lf7b7ophrk.jpg

merlin_vista
پنج شنبه 19 دی 1387, 16:57 عصر
شما بعد از اضافه كردن اين قسمت به گريد خودتان بايد رويداد آن را هم Handler كنيد . (به بخش رويداد هاي گريدويو برويد ، در اين قسمت رويداد هاي مربوط به هر كدام از اين قسمت ها را مشاهده ميكنيد . ) .

مثلاً رويداد RowDeleting : براي قسمت Enable Deleting - :

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
SqlCommand cmd_del = new SqlCommand("delete from TableName where id=@id", con);
cmd_del.CommandType = CommandType.Text;
cmd_del.Parameters.AddWithValue("@id", int.Parse(this.GridView1.DataKeys[e.RowIndex].Value.ToString()));
con.Open();
cmd_del.ExecuteNonQuery();
}
catch { }
finally
{
con.Close();
}

}

براي اطلاعات بيشتر در سايت جستجو كن و به تاپيك اعمال متداول گريدويو آقاي راد مراجعه كن . جواب همه سوالات شما در آنجا نمايان است !!

Ricky Kaka
شنبه 21 دی 1387, 00:17 صبح
دوست عزیز در صورتی که تو دیتابیس کلید اصلی تعریف کرده باشی فقط کافی هر کدوم از چک باکس هارو فعال کنی و هیچ کار دیگه ای لازم نیست انجام بدی

mh19842008
شنبه 21 دی 1387, 07:55 صبح
با سلام اگر شما نوع بانک اطلاعاتی از نوع sql datasource باشد فقط کافی است تیک رافعال کنید

nazila_jon
شنبه 21 دی 1387, 16:20 عصر
بله

منم دنبال همین موضوع هستم

خب چه طور میتونم این تیک رو اضافه کنم؟

من delete رو اضافه میکنم ولی نمیدونم چطور میشه که اون تیک اضافه بشه

troojan
شنبه 21 دی 1387, 17:43 عصر
سلام
با توجه به ظاهر عکس مثل اینکه داری از وب دولوپر استفاده میکنی
برای این کار باید دو تا چیز رو رعایت کنی
اول تو دیتا بیسی که داری اگه جدول هست باید برای یکی از coloumn هایی که داری یه کلید اصلی بزاری برای این کار اون ستونی که میخوای ستون اصلیت باشه رو انتخاب کن بعد از منوهای بالا صفحه عکس کلید رو بزن
بعد میتونی این تیک رو توفسمت مربوطه ببینی و اون رو چک مارک کنی
دوم باید چند تا پارامتر از کدهایی رو که برنامه واست ساخته رو پاک کنی تا دیلت برات فعال باشه وگرنه دیلت توی برنامت میاد ولی با کلیک روی اون نمیتونی چیزی رو پاک کنی
پارامترها عبارت اند از اونایی که تو قسمت
deletcommand:select [coloumn_name1] , [coloumn_name2] , [coloumn_name3] of [table_name] coloumn_name1=[@coloumn_name1] and coloumn_name2=[@coloumn_name2] and coloumn_name=[coloumn_name3وجود دارند از بعد از اولین and تا قبل از علامت " پاکشون کنی
البته syntax ها درست نیستندها

nazila_jon
شنبه 21 دی 1387, 18:06 عصر
من جدولم کلید داره، هیچ برنامه ای هم ننوشتم هنوز که بخوام پاک کنم

من از edit columns/CommandField، دیلیت رو اضافه میکنم و اسم کلید رو هم داخل properties گریدم مینویسم

delete کنار گرید اضافه میشه ها
اما این چک باکسه اضافه نمیشه

egoldashraf
شنبه 21 دی 1387, 22:15 عصر
فکر کنم شما CheckBox رو برای حذف دسته جمعی نیاز داری، درسته؟
چون همون Delete که کنار گرید اضافه میشه، نتیجه اعمال اون تیکه!

nazila_jon
یک شنبه 22 دی 1387, 00:48 صبح
این تیک رو نمیاره بابا http://www.pic4ever.com/images/tissue.gif

http://tinypic.ws/files/pdfpaoo9xn3480m7h9p2.jpg

mehdishahabi
یک شنبه 22 دی 1387, 02:55 صبح
ببینم منظور شما اینه که میخواید یک گرید ویو داشته باشید که به ازا هر سطر از اطلاعات یک چک باکس داشته باشه و با انتخاب این چک باکس ها و زدن یک دکمه حذف که داخله فرمه بتونید سطرهای انتخابی رو از جدولتون حذف کنید؟
اگر که منظورتون اینه بگید تا کدش رو بگذارم واسطون در غیر اینصورت خواهشا بیشتر توضیح بدید.

mh19842008
یک شنبه 22 دی 1387, 08:39 صبح
فکر کنم منظور شما رو فهمیدم زمانی که شما از این طریق (edit columns/CommandField)
دکمه ای را در گرید ویو قرار میدهید اون تیک برای شما ظاهر نمیشود مگر اینکه یک datasource به
آن نیبت دهید فقط در این صورت برای شما تیک ظاهر میشود

troojan
یک شنبه 22 دی 1387, 11:19 صبح
يه چيزي رو يادم رفت كه بگم
بايد يه كار ديگه هم بكني
موقعي كه گريدويو رو انتخاب كردي و كانكشنت رو هم انتخاب كردي و next رو زدي توي اون برگه اي كه ستون هاي گريدويو رو انتخاب ميكني، انجا سمت راست برگه سه تا دكمه به اسم هاي where,order by و advance وجود داره
براي فعال شدن گزينه هاي insert , delete , edit بايد حتما ستوني رو كه ، ستون اصليته (key mark شده) رو انتخاب كني بعد دكمه advance رو بزن و از صفحه اي كه مياد هر دوتا چك مارك رو تيك بزن و بعدش هم كه طبق معمول.
موفق باشي
--------------------------------------
حالا
اون دوتا چك مارك رو تيك نزن و ادامه بده ببين چي ميشه
يا
ستون اصليت رو انتخاب نكن ببين چي ميشه
در هر دو حالت به خواسته ات نميرسي ولي هر بار به يه دليل

baharkabiri
یک شنبه 22 دی 1387, 12:12 عصر
سلام.آقای مهدی شهابی من اون کدی که گفتین رو خیلی لازم دارم.اینکه کاربر با کلیک روی هر سطر بتونه اون رو حذف کنه.البته من enable deleting رو هم نمیتونم فعال کنم چون در sql datasource خودم query نوشتم.امیدوارم متوجه منظورم شده باشید کد زیر رو برای این کار مینویسم اما پیغام خطا میده به این معنی که delet ساپورت نشده.یه همچین چیزی .
بچه ها کمک کنند ممنون میشم.کارم عجله ای است.
Protected Sub gv2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles gv2.RowCommand
Dim StrConn As String
StrConn = "Password='';Persist Security Info=True;User ID=sa;Initial Catalog=EShop;Data Source=.;Connection Timeout=60;"
Dim MyConnection As Data.SqlClient.SqlConnection
MyConnection = New Data.SqlClient.SqlConnection(StrConn)
MyConnection.Open()
Dim MyCommand As New Data.SqlClient.SqlCommand
MyCommand = MyConnection.CreateCommand
If e.CommandName = "delete " Then
MyCommand.CommandText = "delete from basket Where basket_id= '" + e.CommandArgument.ToString() + "' "
Dim MyReader As Data.SqlClient.SqlDataReader
MyReader = MyCommand.ExecuteReader
MyReader.Close()
End If
End Sub

mh19842008
یک شنبه 22 دی 1387, 15:17 عصر
این کد رو در بین دو تگ <Columns></Columns> گریدویو قرار بده

<asp:TemplateField HeaderText="حذف">
<ItemTemplate>
<asp:Button ID="btnRemove" runat="server" BackColor="#FFC080" BorderStyle="Solid"
BorderWidth="2px" CommandName="Delete" Font-Names="Tahoma" Font-Size="12px" OnClientClick="if(!window.confirm('آیا مطمئن اید که رکورد مورد نظر حذف گردد؟'))window.event.returnValue=false"
Text="حذف" />
</ItemTemplate>
</asp:TemplateField>
موفق باشید

baharkabiri
یک شنبه 22 دی 1387, 15:47 عصر
آقا دست شما درد نکنه اما این پیغام رو میده:
Deleting is not supported by data source 'SqlDataSource1' unless DeleteCommand is specified.
باید چیکار کرد؟

mh19842008
یک شنبه 22 دی 1387, 15:56 عصر
من این کد رو استفاده میکنم درست جواب میده اول datasource را به گرید ویو نسبت بدی و بعد این کد رو اضافه کنی تیک delete رو در grid view tasks فعال نکن

egoldashraf
یک شنبه 22 دی 1387, 17:17 عصر
همون طوری که برای دیتا سورس کوئری Select نوشتید باید کوئری Delete رو هم بنویسید!

baharkabiri
یک شنبه 22 دی 1387, 17:57 عصر
خیلی ممنون از راهنمایتون .من یک جدول به اسم basket دارم اگر بخوام کد دیلیت رو بنویسم.سطر جاری رو چجوری مشخص کنم؟

delete from basket where basket_id=???

baharkabiri
یک شنبه 22 دی 1387, 20:03 عصر
بچه ها یه کمکی بدین منتظرم.چجوری توی query ام بنویسم جاهایی رو حذف کن که bsket_id اش برابر basket_id سطری باشه که روش کلیک کردم؟؟

nazila_jon
یک شنبه 22 دی 1387, 23:47 عصر
ببینید

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

و دیگه هیچ برنامه ای برای دلیت داخل کد نویسی ننوشتن

که من متوجه شدم علاوه بر این که دلیت رو به گرید اضافه کرده؛ یک تیک هم در این قسمت هست

که من این رو ندارم

مثل تصویر زیر

http://tinypic.ws/files/82qydfmri2lf7b7ophrk.jpg

حالا من هم میخوام همین کار رو کنم؛ یعنی بدون برنامه نوشتن، و اضافه کردن دلیت به گرید ویو، کار حذف کردن رو انجام بدم

من حدف کردن رو با استفاده از کد نویسی میتونم انجام بدم.. مفصل هم بلدم، اما متاسفانه این روش رو نمیدونم باید چطوری انجام بدم

یعنی بدون نوشتن هیچ کدی

twelve
دوشنبه 23 دی 1387, 00:36 صبح
شما باید اینکار رو از طریق تنظیمات دیتاسورس گرید ویوو انجام بدین
به این صورت که وقتی برای گرید ویوو یک دیتاسورس معین کردید در صفحه آخر وایزارد Configure Data Source دکمه Advanced رو بزنید و در پنجره باز شده 2 گزینه ای که در اختیارتون قرار میگیره رو تیک بزنید. بعد از Ok کردن این وایزارد، تیک هایی که میخواین به گرید ویوو اضافه میشه. (عکس های زیر رو ببینید)

عکس اول (http://i44.tinypic.com/jahta9.jpg)
عکس دوم (http://i39.tinypic.com/14x2ej6.jpg)

baharkabiri
دوشنبه 23 دی 1387, 00:37 صبح
خب اینو که بچه ها گفتند.کافیه در sqldatasource در قسمت advanced گزینه اول رو تیک بزنید.البته advanced به شرطی فعال میشه که شما کلید اصلی رو در query تون انتخاب کرده باشید و query را در قسمت custom ننوشته باشین.
کسی جواب ما رو نمیده؟:متفکر:

mh19842008
دوشنبه 23 دی 1387, 08:58 صبح
سلام یک روش هست که را آسانیه اینکه در رویداد select index changedگرید ویو دستورت را بنویسی این کارو من زمانی که نیاز بود چندین عمل درج و حذف انجام دهم استفاده کردم

MyCommand.CommandText = "delete from basket Where basket_id="&GridView1.Rows(GridView1.SelectedIndex).Cells(5).T ext

baharkabiri
دوشنبه 23 دی 1387, 14:06 عصر
سلام یک روش هست که را آسانیه اینکه در رویداد select index changedگرید ویو دستورت را بنویسی این کارو من زمانی که نیاز بود چندین عمل درج و حذف انجام دهم استفاده کردم

MyCommand.CommandText = "delete from basket Where basket_id="&GridView1.Rows(GridView1.SelectedIndex).Cells(5).T ext


مرسی.این کد رو استفاده کردم نه ایراد میگیره و نه اجرا میشه!!
در کل اگر بخواهی برای یک باتن در گرید ویو کد بنویسی و با دیتا بیس بصورت دستی کار کنی باید چیکار کرد؟
شبیه گرید ویو شدم انقدر سرچ کردم.:عصبانی++:

mh19842008
دوشنبه 23 دی 1387, 14:22 عصر
شما برای کدنویسی برای buttonدر گرید ویو بسته به نوع باتن باید در رویداد های گرید ویو کد مربوط را بنویسی تعجبم من تمام این کارهای که گفتم انجام میدهم و به طور درست اجرا میشه چه با کد چه بی کد

mehdishahabi
دوشنبه 23 دی 1387, 22:46 عصر
سلام.آقای مهدی شهابی من اون کدی که گفتین رو خیلی لازم دارم.اینکه کاربر با کلیک روی هر سطر بتونه اون رو حذف کنه.البته من enable deleting رو هم نمیتونم فعال کنم چون در sql datasource خودم query نوشتم.امیدوارم متوجه منظورم شده باشید کد زیر رو برای این کار مینویسم اما پیغام خطا میده به این معنی که delet ساپورت نشده.یه همچین چیزی .
بچه ها کمک کنند ممنون میشم.کارم عجله ای است.
Protected Sub gv2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles gv2.RowCommand
Dim StrConn As String
StrConn = "Password='';Persist Security Info=True;User ID=sa;Initial Catalog=EShop;Data Source=.;Connection Timeout=60;"
Dim MyConnection As Data.SqlClient.SqlConnection
MyConnection = New Data.SqlClient.SqlConnection(StrConn)
MyConnection.Open()
Dim MyCommand As New Data.SqlClient.SqlCommand
MyCommand = MyConnection.CreateCommand
If e.CommandName = "delete " Then
MyCommand.CommandText = "delete from basket Where basket_id= '" + e.CommandArgument.ToString() + "' "
Dim MyReader As Data.SqlClient.SqlDataReader
MyReader = MyCommand.ExecuteReader
MyReader.Close()
End If
End Sub

مقالش رو آماده کردم اینم لینکش
http://barnamenevis.org/forum/showthread.php?t=143159

nazila_jon
دوشنبه 30 دی 1387, 22:42 عصر
شما باید اینکار رو از طریق تنظیمات دیتاسورس گرید ویوو انجام بدین
به این صورت که وقتی برای گرید ویوو یک دیتاسورس معین کردید در صفحه آخر وایزارد Configure Data Source دکمه Advanced رو بزنید و در پنجره باز شده 2 گزینه ای که در اختیارتون قرار میگیره رو تیک بزنید. بعد از Ok کردن این وایزارد، تیک هایی که میخواین به گرید ویوو اضافه میشه. (عکس های زیر رو ببینید)

عکس اول (http://i44.tinypic.com/jahta9.jpg)
عکس دوم (http://i39.tinypic.com/14x2ej6.jpg)

ممنون واقعا

من این کار رو کردم و مشکلم حل شد

ممنون ممنون

:لبخندساده: :تشویق::تشویق::تشویق:

hamedkh16522
سه شنبه 25 خرداد 1389, 02:46 صبح
آقاي merlin_vista دمت گرم كارم را افتاد دمت گرم:تشویق: