بچه ها
میخوام بتونم این تیک رو اضافه کنم به گریدم
چه طوری این کار رو کنم؟؟
بعد سوال دیگه این که اگر این تیک رو اضافه کنم دیگه احتیاج به برنامه نویسی ندارم؟؟
مثلا اگه تیک delete اضافه بشه دیگه نباید برنامه شو بنویسم؟؟
![]()
بچه ها
میخوام بتونم این تیک رو اضافه کنم به گریدم
چه طوری این کار رو کنم؟؟
بعد سوال دیگه این که اگر این تیک رو اضافه کنم دیگه احتیاج به برنامه نویسی ندارم؟؟
مثلا اگه تیک delete اضافه بشه دیگه نباید برنامه شو بنویسم؟؟
![]()
شما بعد از اضافه كردن اين قسمت به گريد خودتان بايد رويداد آن را هم 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();
}
}
براي اطلاعات بيشتر در سايت جستجو كن و به تاپيك اعمال متداول گريدويو آقاي راد مراجعه كن . جواب همه سوالات شما در آنجا نمايان است !!
دوست عزیز در صورتی که تو دیتابیس کلید اصلی تعریف کرده باشی فقط کافی هر کدوم از چک باکس هارو فعال کنی و هیچ کار دیگه ای لازم نیست انجام بدی
با سلام اگر شما نوع بانک اطلاعاتی از نوع sql datasource باشد فقط کافی است تیک رافعال کنید
بله
منم دنبال همین موضوع هستم
خب چه طور میتونم این تیک رو اضافه کنم؟
من delete رو اضافه میکنم ولی نمیدونم چطور میشه که اون تیک اضافه بشه
سلام
با توجه به ظاهر عکس مثل اینکه داری از وب دولوپر استفاده میکنی
برای این کار باید دو تا چیز رو رعایت کنی
اول تو دیتا بیسی که داری اگه جدول هست باید برای یکی از 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 ها درست نیستندها
من جدولم کلید داره، هیچ برنامه ای هم ننوشتم هنوز که بخوام پاک کنم
من از edit columns/CommandField، دیلیت رو اضافه میکنم و اسم کلید رو هم داخل properties گریدم مینویسم
delete کنار گرید اضافه میشه ها
اما این چک باکسه اضافه نمیشه
فکر کنم شما CheckBox رو برای حذف دسته جمعی نیاز داری، درسته؟
چون همون Delete که کنار گرید اضافه میشه، نتیجه اعمال اون تیکه!
این تیک رو نمیاره بابا
![]()
ببینم منظور شما اینه که میخواید یک گرید ویو داشته باشید که به ازا هر سطر از اطلاعات یک چک باکس داشته باشه و با انتخاب این چک باکس ها و زدن یک دکمه حذف که داخله فرمه بتونید سطرهای انتخابی رو از جدولتون حذف کنید؟
اگر که منظورتون اینه بگید تا کدش رو بگذارم واسطون در غیر اینصورت خواهشا بیشتر توضیح بدید.
فکر کنم منظور شما رو فهمیدم زمانی که شما از این طریق (edit columns/CommandField)
دکمه ای را در گرید ویو قرار میدهید اون تیک برای شما ظاهر نمیشود مگر اینکه یک datasource به
آن نیبت دهید فقط در این صورت برای شما تیک ظاهر میشود
يه چيزي رو يادم رفت كه بگم
بايد يه كار ديگه هم بكني
موقعي كه گريدويو رو انتخاب كردي و كانكشنت رو هم انتخاب كردي و next رو زدي توي اون برگه اي كه ستون هاي گريدويو رو انتخاب ميكني، انجا سمت راست برگه سه تا دكمه به اسم هاي where,order by و advance وجود داره
براي فعال شدن گزينه هاي insert , delete , edit بايد حتما ستوني رو كه ، ستون اصليته (key mark شده) رو انتخاب كني بعد دكمه advance رو بزن و از صفحه اي كه مياد هر دوتا چك مارك رو تيك بزن و بعدش هم كه طبق معمول.
موفق باشي
--------------------------------------
حالا
اون دوتا چك مارك رو تيك نزن و ادامه بده ببين چي ميشه
يا
ستون اصليت رو انتخاب نكن ببين چي ميشه
در هر دو حالت به خواسته ات نميرسي ولي هر بار به يه دليل
سلام.آقای مهدی شهابی من اون کدی که گفتین رو خیلی لازم دارم.اینکه کاربر با کلیک روی هر سطر بتونه اون رو حذف کنه.البته من 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
این کد رو در بین دو تگ <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>
موفق باشید
آقا دست شما درد نکنه اما این پیغام رو میده:
Deleting is not supported by data source 'SqlDataSource1' unless DeleteCommand is specified.
باید چیکار کرد؟
من این کد رو استفاده میکنم درست جواب میده اول datasource را به گرید ویو نسبت بدی و بعد این کد رو اضافه کنی تیک delete رو در grid view tasks فعال نکن
همون طوری که برای دیتا سورس کوئری Select نوشتید باید کوئری Delete رو هم بنویسید!
خیلی ممنون از راهنمایتون .من یک جدول به اسم basket دارم اگر بخوام کد دیلیت رو بنویسم.سطر جاری رو چجوری مشخص کنم؟
delete from basket where basket_id=???
بچه ها یه کمکی بدین منتظرم.چجوری توی query ام بنویسم جاهایی رو حذف کن که bsket_id اش برابر basket_id سطری باشه که روش کلیک کردم؟؟
ببینید
من یک جایی در یکی از پروژه های دوستان دیدم که، ایشون فقط دکمه ی دلیت رو اضافه کردن به خود گرید ویو
و دیگه هیچ برنامه ای برای دلیت داخل کد نویسی ننوشتن
که من متوجه شدم علاوه بر این که دلیت رو به گرید اضافه کرده؛ یک تیک هم در این قسمت هست
که من این رو ندارم
مثل تصویر زیر
حالا من هم میخوام همین کار رو کنم؛ یعنی بدون برنامه نوشتن، و اضافه کردن دلیت به گرید ویو، کار حذف کردن رو انجام بدم
من حدف کردن رو با استفاده از کد نویسی میتونم انجام بدم.. مفصل هم بلدم، اما متاسفانه این روش رو نمیدونم باید چطوری انجام بدم
یعنی بدون نوشتن هیچ کدی
شما باید اینکار رو از طریق تنظیمات دیتاسورس گرید ویوو انجام بدین
به این صورت که وقتی برای گرید ویوو یک دیتاسورس معین کردید در صفحه آخر وایزارد Configure Data Source دکمه Advanced رو بزنید و در پنجره باز شده 2 گزینه ای که در اختیارتون قرار میگیره رو تیک بزنید. بعد از Ok کردن این وایزارد، تیک هایی که میخواین به گرید ویوو اضافه میشه. (عکس های زیر رو ببینید)
عکس اول
عکس دوم
خب اینو که بچه ها گفتند.کافیه در sqldatasource در قسمت advanced گزینه اول رو تیک بزنید.البته advanced به شرطی فعال میشه که شما کلید اصلی رو در query تون انتخاب کرده باشید و query را در قسمت custom ننوشته باشین.
کسی جواب ما رو نمیده؟![]()
سلام یک روش هست که را آسانیه اینکه در رویداد select index changedگرید ویو دستورت را بنویسی این کارو من زمانی که نیاز بود چندین عمل درج و حذف انجام دهم استفاده کردم
MyCommand.CommandText = "delete from basket Where basket_id="&GridView1.Rows(GridView1.SelectedIndex ).Cells(5).Text
شما برای کدنویسی برای buttonدر گرید ویو بسته به نوع باتن باید در رویداد های گرید ویو کد مربوط را بنویسی تعجبم من تمام این کارهای که گفتم انجام میدهم و به طور درست اجرا میشه چه با کد چه بی کد
مقالش رو آماده کردم اینم لینکش
https://barnamenevis.org/showthread.php?t=143159
آقاي merlin_vista دمت گرم كارم را افتاد دمت گرم![]()