PDA

View Full Version : زیر روال اجرا نمی شود



zehs_sha
یک شنبه 11 آبان 1382, 10:39 صبح
بچه ها می یک دکمه بر روی DataGrid گذاشته ام و در بخش DataGrid نیز نوشته ام


OnItemCommand ="MyDataDelete"

و در قسمت بالا Page نیز زیر روال را نوشته ام


<script runat="server">
Sub MyDataDelete(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Me.Response.redirect("WebForm1.aspx")
End Sub
</script>

:cry: :cry: :cry:
اما هنگامی که برنامه را اجرا می کنم و بروی دکمه کلیک می کنم هیچ عکس العملی نشان نمیدهد.

Vahid_Nasiri
یک شنبه 11 آبان 1382, 19:31 عصر
عکس العمل نباید هم نشان بدهد. چون OnItemCommand هنگامی اجرا می شود که یک سطر جدید دارد به دیتاگرید بایند می شود و ربطی به دکمه ی شما ندارد.

zehs_sha
دوشنبه 12 آبان 1382, 08:57 صبح
با سلام اقای نصیری
پس من اگر بخواهم دکمه درونی DataGrid اجرا گردد و زیر روال Delete من کار کند چه باید بکنم :oops:

Vahid_Nasiri
دوشنبه 12 آبان 1382, 20:12 عصر
یک تصحیح کوچک : شما در مورد رخداد صحیح فرموده اید من آنرا با رخدادی هم نام و مشابه برای داده ها اشتباه گرفته بودم!
--------
اولا یک کد وی بی مخصوص شما!


' Visual Basic
Private Sub DataGrid1_ItemCommand(ByVal source As Object, _
ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) _
Handles DataGrid1.ItemCommand
'e.Item is the row of the table where the button was
' clicked.
Dim productID As String
productID = e.Item.Cells(2).Text
If (e.CommandName = "AddToCart") Then
' Add code here to add the productID item to the cart.
End If
DataGrid1.DataBind()
End Sub

همانطور که در کد فوق ملاحظه می کنید توسط DataGridCommandEventArgs می توان فهمید چه کنترلی (AddToCart در بالا) روی آن کلیک شده است.
همچنین با استفاده از سایر خواص آن می توان محل دقیق سطر را هم مشخص کرد.

zehs_sha
دوشنبه 12 آبان 1382, 20:53 عصر
با سلام خدمت اقای نصیری
من کد وی بی را داخل برنامه قرار دادم ولی زیر روال اجرا نشد البته باید بگوییم که برای تست دو خط زیر را به زیر روال اضافه کردم ولی هیچ عکس العملی ندیدم


Me.Response.Redirect("Add_User.aspx")
Me.Response.write("run Procedure")

Vahid_Nasiri
دوشنبه 12 آبان 1382, 22:33 عصر
این رخداد تا بجایی متصل نباشد (توسط event handler ) اجرا نمی شود. این مساله در InitializeComponent تعریف می شود ( در سی شارپ).
برای اینکه این اتصال به صورت خودکار انجام شود باید روی قسمت رخداد ItemCommand در دیتاگرید دوبار کلیک کنید تا تمام کارها خودکار انجام شود در غیر اینصورت این رخداد چون رجیستر نشده است اجرا نخواهد شد.

مثال دیگر:


Private Sub DataGrid1_ItemCommand(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs ) Handles DataGrid1.ItemCommand

If e.CommandName = "btnCoverage" Then 'Retrieve the row where the button was pressed
bytSelectedRow = e.Item.ItemIndex
End If

و این همان مثالی است که شما می خواهید
http://searchvb.techtarget.com/vsnetTip/1,293823,sid8_gci833650_tax293033,00.html


End Sub

zehs_sha
چهارشنبه 14 آبان 1382, 09:06 صبح
اقای نصیری از شما متشکرم و کمال قدر دانی و تشکر را از شما می نماییم :lol: