En iyi yanıtlayıcılar
.Net GridView Checbox ile seçilen satırları silme hata veriyor bi bakabilirmisiniz ?

Soru
-
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true"); string silinecekler = ""; foreach (GridViewRow satirbilgi in GridView1.Rows) { CheckBox chk = (CheckBox)satirbilgi.FindControl("chksec"); if (chk != null & chk.Checked) { silinecekler += satirbilgi.Cells[0].Text + ","; } } conn.Open(); string komut = "DELETE * FROM dbo.aspnet_Iletisim where ID in (" + silinecekler.Remove(silinecekler.Length - 1, 1) + ")"; SqlCommand cmd = new SqlCommand(); cmd = new SqlCommand(komut, conn); cmd.ExecuteNonQuery(); cmd.Connection.Close(); GridDoldur();
}
kod bu çalıştırıp grid den checboxları seçtiğimde sil dediğimde executenonquery de patlıyor "Incorrect syntax near '*'."
kaynak = http://www.aspnetornekleri.com/gridview-ornekleri/asp-net-gridview-checkbox-ile-secilen-satirlari-silme-coklu-silme.html- Düzenleyen ByAvora 31 Mayıs 2014 Cumartesi 20:52
Yanıtlar
-
Tabii daha ideal yontemler var. Ornekler icin buraya bak:
http://social.msdn.microsoft.com/Forums/tr-TR/8e61011d-e4b3-443e-af5d-fbec6a96d9e3/yazdgm-fonksiyona-parametre-gonderiminde-in-datalarn-nasl-gndermeliyim?forum=sqltr
Oradan ornek bir kodun sana uyarlanmis sekli:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { StringBuilder sb = new StringBuilder(); sb.AppendLine(@"declare @cXML varchar(4000), @NodeName varchar(100);"); sb.AppendLine(@"set @cXML = '<IdList>"); foreach (GridViewRow satirbilgi in GridView1.Rows) { CheckBox chk = (CheckBox)satirbilgi.FindControl("chksec"); if (chk != null & chk.Checked) { sb.AppendLine( string.Format(@"<Id id=""{0}"">", satirbilgi.Cells[0].Text) ); } } sb.AppendLine( @"</IdList>'; set @NodeName = '/IdList/Id'; -- XML'den Idleri tabloya cevir DECLARE @hDoc int; exec sp_xml_preparedocument @hDoc OUTPUT, @cXML; Delete FROM [dbo.aspnet_Iletisim] WHERE ID IN ( SELECT id FROM OPENXML(@hDoc, @Nodename, 1) WITH (id int) ); EXEC sp_xml_removedocument @hDoc;" ); using(SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true")) { conn.Open(); string komut = sb.ToString(); SqlCommand cmd = new SqlCommand(komut, conn); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } GridDoldur(); }
- Düzenleyen CetinBasoz 31 Mayıs 2014 Cumartesi 21:12
- Yanıt Olarak İşaretleyen Özgür Tekbaş 6 Haziran 2014 Cuma 09:26
Tüm Yanıtlar
-
-
Tabii daha ideal yontemler var. Ornekler icin buraya bak:
http://social.msdn.microsoft.com/Forums/tr-TR/8e61011d-e4b3-443e-af5d-fbec6a96d9e3/yazdgm-fonksiyona-parametre-gonderiminde-in-datalarn-nasl-gndermeliyim?forum=sqltr
Oradan ornek bir kodun sana uyarlanmis sekli:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { StringBuilder sb = new StringBuilder(); sb.AppendLine(@"declare @cXML varchar(4000), @NodeName varchar(100);"); sb.AppendLine(@"set @cXML = '<IdList>"); foreach (GridViewRow satirbilgi in GridView1.Rows) { CheckBox chk = (CheckBox)satirbilgi.FindControl("chksec"); if (chk != null & chk.Checked) { sb.AppendLine( string.Format(@"<Id id=""{0}"">", satirbilgi.Cells[0].Text) ); } } sb.AppendLine( @"</IdList>'; set @NodeName = '/IdList/Id'; -- XML'den Idleri tabloya cevir DECLARE @hDoc int; exec sp_xml_preparedocument @hDoc OUTPUT, @cXML; Delete FROM [dbo.aspnet_Iletisim] WHERE ID IN ( SELECT id FROM OPENXML(@hDoc, @Nodename, 1) WITH (id int) ); EXEC sp_xml_removedocument @hDoc;" ); using(SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true")) { conn.Open(); string komut = sb.ToString(); SqlCommand cmd = new SqlCommand(komut, conn); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } GridDoldur(); }
- Düzenleyen CetinBasoz 31 Mayıs 2014 Cumartesi 21:12
- Yanıt Olarak İşaretleyen Özgür Tekbaş 6 Haziran 2014 Cuma 09:26
-
Tabii daha ideal yontemler var. Ornekler icin buraya bak:
http://social.msdn.microsoft.com/Forums/tr-TR/8e61011d-e4b3-443e-af5d-fbec6a96d9e3/yazdgm-fonksiyona-parametre-gonderiminde-in-datalarn-nasl-gndermeliyim?forum=sqltr
Oradan ornek bir kodun sana uyarlanmis sekli:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { StringBuilder sb = new StringBuilder(); sb.AppendLine(@"declare @cXML varchar(4000), @NodeName varchar(100);"); sb.AppendLine(@"set @cXML = '<IdList>"); foreach (GridViewRow satirbilgi in GridView1.Rows) { CheckBox chk = (CheckBox)satirbilgi.FindControl("chksec"); if (chk != null & chk.Checked) { sb.AppendLine( string.Format(@"<Id id=""{0}"">", satirbilgi.Cells[0].Text) ); } } sb.AppendLine( @"</IdList>'; set @NodeName = '/IdList/Id'; -- XML'den Idleri tabloya cevir DECLARE @hDoc int; exec sp_xml_preparedocument @hDoc OUTPUT, @cXML; Delete FROM [dbo.aspnet_Iletisim] WHERE ID IN ( SELECT id FROM OPENXML(@hDoc, @Nodename, 1) WITH (id int) ); EXEC sp_xml_removedocument @hDoc;" ); using(SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true")) { conn.Open(); string komut = sb.ToString(); SqlCommand cmd = new SqlCommand(komut, conn); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } GridDoldur(); }
Merhaba, sizin kodunuz patlıyor malesef, :(
Benim kod çalıştı, tabi ama bir iki bişi daha ekliyim dedim yine hata aldım,
nerde yanlış ?
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { //int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Values[0]); //SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true"); //conn.Open(); //SqlCommand command = new SqlCommand(@"UPDATE dbo.aspnet_Iletisim SET ID=1 where ID ='" + id.ToString() + "'", conn); //command.ExecuteReader(); //GridDoldur(); SqlConnection conn = new SqlConnection(@"Data Source=.;Initial Catalog=Uyelik;Integrated Security=True; Asynchronous Processing=true"); string silinecekler = ""; foreach (GridViewRow satirbilgi in GridView1.Rows) { CheckBox chk = (CheckBox)satirbilgi.FindControl("chksec"); if (chk != null & chk.Checked) { silinecekler += satirbilgi.Cells[0].Text + ","; } } conn.Open(); string komut = "DELETE FROM dbo.aspnet_Iletisim where ID in (" + silinecekler.Remove(silinecekler.Length - 1, 1) + ")"; SqlCommand cmd = new SqlCommand(); cmd = new SqlCommand(komut, conn); cmd.ExecuteNonQuery(); cmd.Connection.Close(); GridDoldur(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { //Find the checkbox control in header and add an attribute ((CheckBox)e.Row.FindControl("chksec")).Attributes.Add("onclick", "javascript:SelectAll('" + ((CheckBox)e.Row.FindControl("chksec")).ClientID + "')"); } } }
Nerde yanlış yapıyorum ? gridimde bu,
<asp:GridView ID="GridView1" BackColor="WhiteSmoke" runat="server" AutoGenerateColumns="False" GridLines="Vertical" CssClass="grid-view" OnRowCreated="GridView1_RowCreated" DataKeyNames="ID" OnRowDeleting="GridView1_RowDeleting" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Center" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chksec" runat="server" /> </ItemTemplate> <HeaderTemplate> <asp:CheckBox ID="chksec" runat="server" /> </HeaderTemplate> <HeaderStyle BorderStyle="Solid" BorderWidth="1" /> <ItemStyle BorderStyle="Solid" BorderWidth="1" VerticalAlign="Middle" /> </asp:TemplateField> <asp:BoundField HeaderText="ID" DataField="ID" SortExpression="id"> <HeaderStyle Width="30px" BorderStyle="Solid" BorderWidth="1" /> <ItemStyle Width="30px" BorderStyle="Solid" BorderWidth="1" /> </asp:BoundField> <asp:BoundField HeaderText="Konu" DataField="Konu"> <HeaderStyle Width="150px" BorderStyle="Solid" BorderWidth="1" /> <ItemStyle Width="150px" BorderStyle="Solid" BorderWidth="1" /> </asp:BoundField> <asp:BoundField HeaderText="Mesaj" DataField="Mesaj"> <HeaderStyle Width="700px" BorderStyle="Solid" BorderWidth="1" /> <ItemStyle Width="700px" BorderStyle="Solid" BorderWidth="1" /> </asp:BoundField> <asp:BoundField HeaderText="E-Mail" DataField="E_Mail"> <HeaderStyle Width="200px" BorderStyle="Solid" BorderWidth="1" /> <ItemStyle Width="200px" BorderStyle="Solid" BorderWidth="1" /> </asp:BoundField> <asp:CommandField ButtonType="Image" DeleteImageUrl="~/images/icon/delete-icon2.png" ShowDeleteButton="True" /> </Columns> </asp:GridView>
buda databoundun scripti,
<script type="text/javascript"> function SelectAll(id) { var grid = document.getElementById("<%= GridView1.ClientID %>"); var cell; if (grid.rows.length > 0) { for (i = 1; i < grid.rows.length; i++) { cell = grid.rows[i].cells[0]; for (j = 0; j < cell.childNodes.length; j++) { if (cell.childNodes[j].type == "checkbox") { cell.childNodes[j].checked = document.getElementById(id).checked; } } } } } </script>
Hata Mesajı Bu =
Incorrect syntax near ','.
-
-
-
-
-
bir sıkıntı çıktı :D,
kullanıcı checkbox seçmeden sil'e basarsa sayfa patlıyor, nasıl kullanıcıya seçim yapmadan silemezsiniz diye uyarı verdirebilirim. ?
CheckBox'ın seçili olup olamdığına bakabilirsiniz.
if(checkbox1.Checked) { //İşlemler } else { //Hata mesajı. }
İletişim -
Conn.Open(),string komut="Delete..." ve altındaki kod bloklarını foreach içindeki checkbox.Checked ın altına yapıştırın. Sorun hallolur.
Birden Fazla CheckBox var, gridview'in içinde checkbox yerleştirdim, seçili satırı siliyor, veya 1 den fazla checkbox seçtiğinde, foreach içine alınca tek tek mesaj verdirio her satır için ? -