آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
اینم مطلبی که قول داده بودم.
اگر شما تا به حال ایمیل خود را باز کرده باشید میبینید که قابلیت انتخاب چند ایمیل به وسیله CheckBox و حذف آن ها را دارید.در این مقاله به بررسی این سناریو به کمک GridView میپردازم.
همانطور که میدانیم کنترل GridView خاصیت حذف یک رکورد در یک لحظه را دارد و به ما امکان حذف جند رکورد همزمان را با انتخاب چک باکس نمیدهد.
در این مقاله ما میخواهیم این قابلیت را به GridView اضافه کنیم.
مثال ما به کمک بانک اصلاعاتی Northwind مایکروسافت اجرا شده
مراحل انجام کار
1-یک صفحه وب جدید با پسوند .aspx ایجاد کرده و یک کنترل GridView و یک کنترل
SqlDataSource را به آن صفحه اضافه کنید.
2- حال SqlDataSource خود را برای اتصال به جدول مورد نظر خود پیکربندی کنید و همچنین دستوراتی برای حذف کردن و انتخاب کردن داده از آن نیز به SqlDataSource خود اضافه کنید.
به عنوان مثال من از جدول Employees بانک Northwind به ترتیب زیر استفاده کردم.
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT EmployeeID, LastName, City FROM Employees"
DeleteCommand="DELETE FROM Employees WHERE [EmployeeID] = @EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" >
<DeleteParameters>
<asp:Parameter Name="EmployeeID" />
</DeleteParameters>
</asp:SqlDataSource>
3-حال که پیکربندی SqlDataSourceپایان یافت آن رابه GridView برنامه خود Bind کنید.
4- حال باید یک چک باکس به ازای هر ردیف از داده هایمان اضافه کنیم برای انجام این کار
مراحل زیر را اجرا کنید
4 -1:
یک TemplateField درون <Columns> ایجاد کرده و همچنین ستون های مورد نظر خود برای نمایش نیز به <Columns> اضافه کنید .
4-2 :
درون TemplateField یک ItemTemplate درون آن ایجاد کرده و سپس یک چکباکس به آن اضافه کنید
نمونه کد :
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRows" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
5- حال یک Button برای حذف دسته جمعی به صفحه اضافه کنید و آن را به btnMultipleRowDelete تفییرنام دهید.
در نهایت ما در فایل aspx خود این کد را تولید کردیم.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="cbRows" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
<asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
<asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
SelectCommand="SELECT EmployeeID, LastName, City FROM Employees"
DeleteCommand="DELETE FROM Employees WHERE [EmployeeID] = @EmployeeID"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" >
<DeleteParameters>
<asp:Parameter Name="EmployeeID" />
</DeleteParameters>
</asp:SqlDataSource>
<asp:Button
ID="btnMultipleRowDelete"
OnClick="btnMultipleRowDelete_Click"
runat="server"
Text="Delete Rows" />
حال در فایل کد خود که با پسوند cs. برای #C و یا vb. برای VB کد زیر را نوشته
C#
protected void btnMultipleRowDelete_Click(object sender, EventArgs e)
{
// Looping through all the rows in the GridView
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox checkbox = (CheckBox)row.FindControl("cbRows");
//Check if the checkbox is checked.
//value in the HtmlInputCheckBox's Value property is set as the //value of the delete command's parameter.
if (checkbox.Checked)
{
// Retreive the Employee ID
int employeeID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);
// Pass the value of the selected Employye ID to the Delete //command.
SqlDataSource1.DeleteParameters["EmployeeID"].DefaultValue = employeeID.ToString();
SqlDataSource1.Delete();
}
}
}
VB.NET
ProtectedSub btnMultipleRowDelete_Click(ByVal sender AsObject, ByVal e As EventArgs) ' Looping through all the rows in the GridView
ForEach row As GridViewRow In GridView1.Rows
Dim checkbox As CheckBox = CType(row.FindControl("cbRows"), CheckBox)
'Check if the checkbox is checked. 'value in the HtmlInputCheckBox's Value property is set as the //value of the delete command's parameter.
If checkbox.Checked Then
' Retreive the Employee ID
Dim employeeID AsInteger = Convert.ToInt32(GridView1.DataKeys(row.RowIndex).V alue)
' Pass the value of the selected Employye ID to the Delete //command.
SqlDataSource1.DeleteParameters("EmployeeID").Defa ultValue = employeeID.ToString()
SqlDataSource1.Delete()
EndIf
Next row
EndSub
»» مهدی شهابی
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
برادر عزيز! بسيار عالي است!
همانطور كه امام صادق (ع) فرمودند: زكات دانش، آموختن آن به ديگران است! اميدوارم همه دوستان دانش خودشون رو به بقيه آموزش بدهند!
اگر كدهاتون رو هم به صورت يه فايل، براي دانلود بزاريد بدك نيست!
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
انشالله در آموزش های آتی سعی میکنم اینکار رو انجام بدم
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
خیلی ممنون بابت این مطلب که من مدت زیادیه درگیرشم.اگه query رو در قسمت advanced نوشته باشیم و enable deleting فعال نباشه چی؟میشه این کارو کرد؟
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
اصلا این نوع طراحی کاری به فعال یا غیر فعال بودن enable deleting نداره
منظورتون رو از قسمت advanced رو نمیفهمم
ولی در کل شما باید به ازای هر سطری که میخواید حذف کنید یکبار دستور Delete رو اجرا کنید
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
با سلام
کدی که نوشتید IDگرید را بر میگرداند ولی عملیات حذف را انجام نمی دهد.
لطفا فایل این کد را قرار دهید.
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
فکر می کنم کدی که آقای راد گذاشتن خیلی کامل باشه. متدهایی که بکار بردین high class نیست
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
نقل قول:
نوشته شده توسط
iman_ad
فکر می کنم کدی که آقای راد گذاشتن خیلی کامل باشه. متدهایی که بکار بردین high class نیست
بحث اینکه کی کدش با کلاس تر باشه در این مکان مهم نیست بلکه تبادل اطلاعات در هر سطح مطرح است . بفرض مثال اگر هم جایی بتواند بهینه تر نوشته شود اون وظیفه دیگر دوستان هست که کمک کنند ... به نظر من هر فردی با هر سطح اطلاعاتی اگر بتواند حتی به اندازه نوک سوزن یک فرد دیگر رو به تامل در مورد موضوع مطرح شده وادار کنه این خودش یک دنیا ارزش داره دیگه چه برسه به اینکه بخواهد چیزی رو آموزش بده ...
و از دوستمون که این مطلب رو آموزش دادن تشکر میکنم .
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
با سلام
سوال من این هستش که چطور می تونیم checkbox های رو که مقدارش false هستش رو به true تغییر بدیم(یا بلعکس) و بعد تغییرات رو داخل gridview نمایش بدیم
با تشکر
نقل قول: آموزش ساخت گرید ویو با قابلیت حذف چند رکورد در #C و VB(شبیه سازی mail box)
سلام
ميخوام بدونم چطور ميشه check box رو بذارم توي هر ركورد grid view .با سي شارپ رو ميخوام بدونم.