View Full Version : سوال: عکس العمل نشان ندادن دکمه حذف خبر نسبت به کدهام!!!
Shamim832
یک شنبه 15 اسفند 1389, 14:38 عصر
مهندسین عزیزسلام ،خسته نباشید
درقسمت مدیریت اخبار وب سایتم نمی دونم چرا دکمه حذف خبربرای کدهام هیچ عکس العملی نشون نمی ده لطف می کنیدببینید کجاش ایراد داره !!
ازنظرخودم فکرنمی کنم کدهام مشکلی داشته باشن !! هیچ اروری هم نمی ده؟؟
همه کنترل هام توی Updatepanel هستن ودرقسمت Triggerهم دکمه حذف رو اضافه کردم!!
باتشکر
Protected Sub Button_Delete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button_Delete.Click
Try
Dim i As Integer
For i = 0 To GridView_NewsList.Rows.Count - 1
Dim CheckBox_Delete As CheckBox = CType(GridView_NewsList.Rows(i).Cells(4).FindContr ol("CheckBox_Delete"), CheckBox)
If CheckBox_Delete.Checked Then
Dim Label_ID As Label = CType(GridView_NewsList.Rows(i).Cells(4).FindContr ol("Label_ID"), Label)
DeleteSelectedNews(Label_ID.Text)
End If
Next
lblMessage.Text = "خبر مورد نظر با موفقیت ازسایت حذف شد."
lblMessage.Visible = True
Catch ex As Exception
lblMessage.Text = "به دلیل خطای زیر گزینه های انتخابی حذف نشدند<br/>" + ex.Message
End Try
End Sub
Private Sub DeleteSelectedNews(ByVal Label_ID As String)
q = "Delete * From News_News where ID='" + Label_ID.ToString + "'"
Executequery(q)
End Sub
<asp:TemplateField HeaderText="حذف">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="5%"/>
<ItemTemplate>
<asp:CheckBox ID="CheckBox_Delete" runat="server" />
<asp:Label ID="Label_ID" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"/>
</asp:TemplateField>
<Triggers>
<asp:PostBackTrigger ControlID="Button_Delete" />
<asp:PostBackTrigger ControlID="Button_Update" />
<asp:PostBackTrigger ControlID="GridView_NewsList" />
</Triggers>
Behrang_a
یک شنبه 15 اسفند 1389, 16:14 عصر
مطمئن هستی که اون کنترل CheckBox رو پیدا میکنه و Null بر نمیگردونه ؟
Shamim832
یک شنبه 15 اسفند 1389, 21:49 عصر
سلام وممنون ازپاسختون ،این دفعه یه لیبل گذاشتم وکدم رو به این شکل تغییردادم تاببینم اصلا می تونه Checkboxروپیداکنه یانه؟؟مثل اینکه اصلا نمی تونه پیداش کنه !! به نظرتون چه تغییری توکدم بدم؟!!
Dim i As Integer = 0
Dim CheckBox_Delete As CheckBox = CType(GridView_NewsList.Rows(i).Cells(4).FindContr ol("CheckBox_Delete"), CheckBox)
If CheckBox_Delete.Checked Then
Label7.Text = "true"
End If
Shamim832
دوشنبه 16 اسفند 1389, 08:57 صبح
سلام،قسمت e.CommandSource رو نمی شناسه چطوری بشناسونمش؟؟
منظورتون ازاگر کار نکرد کد PageLoad هم قرار بدید. چیه؟؟ نفهمیدم!
Shamim832
دوشنبه 16 اسفند 1389, 10:44 صبح
من این کدهارو هم امتحان کردم اما بازم این حلقه رو اصلا اجرا نمی گیره؟؟!!!
Dim NewsID As Integer
Dim Row As GridViewRow
For Each Row In Me.GridView_NewsList.Rows
Dim CheckBox_Delete As CheckBox = CType(Row.FindControl("CheckBox_Delete"), CheckBox)
If (CheckBox_Delete.Checked) Then
NewsID = Convert.ToInt32(Me.GridView_NewsList.DataKeys(Row. RowIndex).Value.ToString())
'Delete Row Code : Where id=rows
lblNewsdate.Text = NewsID.ToString
End If
Next
<asp:GridView ID="GridView_NewsList" DataKeyNames="ID"
Shamim832
دوشنبه 16 اسفند 1389, 10:49 صبح
اساتیدکسی نیست کمکم کنه؟؟!!! نیازفوری دارم!!
Behrang_a
دوشنبه 16 اسفند 1389, 12:00 عصر
اساتیدکسی نیست کمکم کنه؟؟!!! نیازفوری دارم!!
مطمئن هستی که توی لوپ نمیره ؟
من این کار رو امتحان کردم البته با سی شارپ و به راحتی جواب داد
شاید بهتر باشه یه گرید ساده با یه دکمه و یه دیتا سورس معمولی رو تو یه پروژه جدا امتحان کنی بعد اگه دیدی جواب گرفتی تو این پروژه بگردی ببینی چرا جواب نمیده من کدهای خودم رو میزارم ببین به سادگی جواب داد
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="PID"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Family" HeaderText="Family"
SortExpression="Family" />
<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
<asp:TemplateField>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [PID],[Name], [Family], [Age] FROM [Person]">
</asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
int i=0;
foreach(GridViewRow row in GridView1.Rows)
{
CheckBox chk = row.FindControl("Checkbox1") as CheckBox;
if (chk.Checked)
i++;
}
Response.Write(i);
}
}
Behrang_a
دوشنبه 16 اسفند 1389, 12:51 عصر
من با UpdatePanel هم امتحان کردم و باز هم کار کرد :
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="PID"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Family" HeaderText="Family"
SortExpression="Family" />
<asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
<asp:TemplateField>
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [PID],[Name], [Family], [Age] FROM [Person]">
</asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="GridView1" />
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
</asp:UpdatePanel>
Shamim832
شنبه 21 اسفند 1389, 20:44 عصر
ممنون ازپاسختون ،توصفحه دیگه هم امتحان کردم اما متاسفانه هیچ عکس العملی نش.ن نمی ده!! اصلا ارور هم نمی ده!!!
ricky22
شنبه 21 اسفند 1389, 21:20 عصر
ببینم در رویداد Page_load مجددا عمل بایند Grid را خارج از If Not IsPostBack انجام ندادید؟
کد Page_Load را اینجا قرار بدید
Shamim832
یک شنبه 22 اسفند 1389, 08:47 صبح
اومدم تویه پروژه دیگه خیلی ساده دوباره اینکارروانجام دادم خودم که فکر می کنم یه جایی یه چیزجزیی رو فراموش کردم اما نمی دونم کجا؟؟
اگه یه نگاهی بندازین وببینن اشکال کارم کجاست ممنون میشم باتشکر.
Imports System.Data
Imports System.Data.SqlClient
Partial Public Class _Default
Inherits System.Web.UI.Page
Public Shared q As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim dt As New DataTable
q = "Select ID,Title from News Order By ID Desc"
dt = Selectquery(q)
GridView1.DataSource = dt
GridView1.DataBind()
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim NewsID As Integer
Dim Row As GridViewRow
For Each Row In Me.GridView1.Rows
Dim CheckBox1 As CheckBox = CType(Row.Cells(0).FindControl("CheckBox1"), CheckBox)
If (CheckBox1.Checked) Then
NewsID = Convert.ToInt32(Me.GridView1.DataKeys(Row.RowIndex ).Value.ToString())
q = "Delete * From News where ID='" + NewsID.ToString + "'"
Executequery(q)
Label2.Text = "sucsess"
End If
Next
'Dim i As Integer
'For i = 0 To GridView1.Rows.Count - 1
' Dim CheckBox_Delete As CheckBox = CType(GridView1.Rows(i).Cells(0).FindControl("CheckBox1"), CheckBox)
' If (CheckBox_Delete.Checked) Then
' Dim Label_ID As Label = CType(GridView1.Rows(i).Cells(0).FindControl("Label_ID"), Label)
' q = "Delete * From News where ID='" + Label_ID.Text.ToString + "'"
' Executequery(q)
' Label2.Text = "sucsess"
' End If
'Next
End Sub
End Class
<div>
<br />
<asp:GridView ID="GridView1" DataKeyNames="ID" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" ></asp:CheckBox>
<asp:Label ID="Label_ID" runat="server" Text='<%#Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("Title") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>
لطف میکنید یه نگاهی بندازیدممنون
karim orooji
یک شنبه 22 اسفند 1389, 10:10 صبح
سلام به دوست عزیز
یک نکته مهم رو در برنامه که دوستان هم به اون اشاره کرده بودند رو رعایت نکرده بودی
- عدم استفاده از is not ispostback
و در زمان حذف فیلد از (*) استفاده کرده بودی
در برنامه من یک متغیر از نوع Boolean گرقفتم که زمانی شرط در برنامه درست بود عملیات حذف رکورد رو انجام بده
بقیه شم معلومه
موفق باشی
Shamim832
یک شنبه 22 اسفند 1389, 12:35 عصر
دوست عزیزازپاسختون واقعا ممنونم،شما درست گفته بودین!! یه سوال من فقط Post back و* رو درست کردم پروژه ام کارکرد آیا نیازی هست که از متغیری که گفتین استفاده بشه ؟
karim orooji
یک شنبه 22 اسفند 1389, 13:24 عصر
نه
بایدی در کار نیست
این دستور رو برای درستی شرط اگه برقرار بود بیاد اون کد مورد نظر رو اجرا کنه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.