PDA

View Full Version : حذف رکورد در دیتا گرید ...



peymannaji
سه شنبه 23 مرداد 1386, 13:27 عصر
سلام ...
قبل از ایجاد من کل تاپیکهای مربوطه رو مشاهده کردم ولی باور بفرمائید چیزی از اونها دستگیرم نشد ... در واقع کمتر کسی با اصل قضیه مشکل داشت و بیشتر مسائل مرتبط به این قضیه بود ...

ببینید من برای اولین بار هست که میخوام در دیتا گریدم آیتم DELETE استفاده کنم ... برای این منظور من از Template Field استفاده کردم و یک دکمه قرار دادم ... راستش در این زمینه هیچ اطلاع دیگری ندارم ... و بعد از این مرحله نمیدونم دیگه باید چیکار کرد یک سری مثال هم دیدم کهه یا متفاوت بودن با خواسته من یا اینکه بسیار پیچیده بودن و من متوجه نشدم ... اگه امکان داره منو راهنمایی کنید ( من از دات نت 2 استفاده میکنم )

nazaninam
سه شنبه 23 مرداد 1386, 13:34 عصر
شما اعمال متداول GridView را مطالعه کردید؟

shahroozj
سه شنبه 23 مرداد 1386, 15:16 عصر
منظورشان این لینک است :
http://barnamenevis.org/forum/showthread.php?t=50594

peymannaji
سه شنبه 23 مرداد 1386, 18:53 عصر
سلام دوستان عزیزم ... راستش آره اما اون چیزی که من مده نظرم هست رو ندیدم :( توروخدا کمک کنید .... ( منم سعی میکنم اما چون کارم گیر کرده از شما عزیزان میخوام )

peymannaji
سه شنبه 23 مرداد 1386, 20:16 عصر
سلام دوست عزیز ....
یک نکته رو یادم رفت بگم که من از دیتا سورس استفاده نکردم و همه چیز رو با کد نویسی ایجاد کردم با کمک دیتا ست ... با توجه به این مسئله باید چیکار کنم ؟

fereshte22
سه شنبه 23 مرداد 1386, 20:22 عصر
سلام
شما نگفتید که کاری که میخواهید انجام دهید چه تفاوتی با مثال های داده شده در سایت دارد.
ولی به هر حال
به کد زیر یه نگاهی بندازید ببینید به دردتون میخورد.


<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" CommandName="Delete" OnClientClick="return confirm('Are you sureyou want to delete this record?');"
Text="Delete" />
</ItemTemplate>
</asp:TemplateField>

کد


Protected Sub SqlDataSource1_Deleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEvent Args)
If e.Exception Is Nothing Then
If e.AffectedRows = 1 Then
Label1.Text = "Record deletedsuccessfully."
Else
Label1.Text = "An error occurred duringthe delete operation."
End If
Else
Label1.Text = "An error occurred whileattempting to delete the row."
e.ExceptionHandled = True
End If
End Sub

در ضمن وقتی دیتاسورس ایجاد میکنید delete را هم براش مشخص کنید.
اگر هم میخواهید از چک باکس استفاده کنید همون کد آقای راد را استفاده کنید


<asp:TemplateField HeaderText="حذف">
<FooterTemplate>
<asp:Button ID="btnRemove" runat="server" BackColor="#FFC080" BorderStyle="Solid"
BorderWidth="1px" CommandName="remove" Font-Names="Tahoma" Font-Size="11px" Text="حذف" />
</FooterTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkRemove" runat="server" />
</ItemTemplate>
<ItemStyle BackColor="LightCoral" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5A49A7" HorizontalAlign="Center" />
<FooterStyle BackColor="#669900" HorizontalAlign="Center" />
</asp:TemplateField>

showfooter را هم true کنید
کد


Protected Sub AuthorsGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles AuthorsGridView.RowCommand
Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each gvRow As GridViewRow In AuthorsGridView.Rows
chkRemove = CType(gvRow.FindControl("ChkRemove"), WebControls.CheckBox)
If chkRemove.Checked Then
boolCheck = True
strIDs += AuthorsGridView.DataKeys(gvRow.RowIndex).Value & ","
End If
Next
If boolCheck = True Then
Dim strSQL As String = "Delete From kala Where number IN (" & strIDs.Substring(0, strIDs.LastIndexOf(",")) & ")"
Dim Cnn As New SqlConnection("connectionstring")
Dim Cmd As New SqlCommand(strSQL, Cnn)
Try
Cnn.Open()
Cmd.ExecuteNonQuery()
Catch ex As SqlException
Response.Write(ex.Message.ToString())
Finally
If Cnn.State <> ConnectionState.Closed Then Cnn.Close()
If (Not Cmd Is Nothing) Then Cmd.Dispose()
BindGridView()
End Try
End If
End Sub
Public Sub BindGridView()
AuthorsGridView.DataSourceID = "SqlDataSource1"

End Sub


کلید اصلی هم به نام number است.

fereshte22
سه شنبه 23 مرداد 1386, 20:57 عصر
اگر بخواهید از روش دوم (حذف با چک باکس)استفاده کنید .فکر نکنم تفاوت چندانی داشته باشد فقط تابع BindGridView() فرق میکنه که شما کدهای بایندینگ خودتون را قرار دهید و احتمالا به جای
AuthorsGridView_RowCommand()
از


ProtectedSub AuthorsGridView_RowDeleting(ByVal sender AsObject, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles AuthorsGridView.RowDeleting

باید استفاده کنید(شاید هم فرقی نداشته باشد)

fereshte22
سه شنبه 23 مرداد 1386, 22:32 عصر
یه نمونه برنامه برای حذف

peymannaji
جمعه 26 مرداد 1386, 22:14 عصر
یه نمونه برنامه برای حذف

سلام دوست عزیز باز هم مثل همیشه به دادم رسیدی دمت گرم خیلی ماهی ... فقط یک سوالی داشتم و اینکه اگر ممکن هست کدهای زیر رو بگین هر خط چه عملی انجام میده . باز هم بی نهایت سپاسگزارم :بوس::قلب:




Dim chkRemove As WebControls.CheckBox
Dim strIDs As String = ""
Dim boolCheck As Boolean = False
For Each gvRow As GridViewRow In AuthorsGridView.Rows
chkRemove = CType(gvRow.FindControl("ChkRemove"), WebControls.CheckBox)
If chkRemove.Checked Then
boolCheck = True
strIDs += AuthorsGridView.DataKeys(gvRow.RowIndex).Value & ","
End If
Next
If boolCheck = True Then