الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف احذف صف من Gridview بواسطة Checkbox

مغلق
بدأه qudama في 17 نوفمبر 2007 · 3 رد · 1,743 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الاحبة لقد حاولت حذف row من خلال خاصية checbox في Gridview

ولكن للاسف لم تصلح معي فارجوا من الاخوة الافادة فان الخير سيعم الجميع باذن الله

 </FONT></P> <P align=left><FONT size=3>SqlConnection conn = new SqlConnection();
		SqlCommand cmd = new SqlCommand();
		SqlParameter p = new SqlParameter();
		conn.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Data.mdf;Integrated Security=True;User Instance=True;";
		CheckBox box = new CheckBox();

		foreach (GridViewRow orow in GridView1.Rows)
		{

			box = (CheckBox)orow.FindControl("CheckBox1");
			// box = (CheckBox)orow.FindControl("checkBox1");
			if (box.Checked==true )
			{

		   int x = int.Parse(GridView1.DataKeys[orow.RowIndex ].Value.ToString());

			   //SqlDataSource1.DeleteParameters["id"].DefaultValue = x.ToString();
			   //SqlDataSource1.Delete();
			   cmd.CommandText = "del";
			   cmd.CommandType = CommandType.StoredProcedure;
			   p.ParameterName = "ids";
			   p.Value = x;
			   cmd.Parameters.Add(p);
			   //SqlDataSource1.DeleteParameters["@id"].DefaultValue = x.ToString();
			   //SqlDataSource1.Delete();
			   conn.Open();
			   cmd.ExecuteNonQuery();
			   conn.Close();
			   GridView1.DataBind();
			   SqlDataSource1.DataBind();
			}
		}
	}</FONT></P> <P align=left><FONT size=3>

وتأتيني الرساله التالية عند حذف احد الصفوف

Index was out of range. Must be non-negative and less than the size of the collection.

Parameter name: index

وتعلم على السطر التالي اي ان فيه الخلل

int x = int.Parse(GridView1.DataKeys[orow.RowIndex ].Value.ToString());

#2

الحل بيسط جدا يا اخى شوف اقوم بشرحها لك بمثال بسيط

اولا انشي قاعده بيانات بها جدول واحد به هذه المعطيات EmployeeID بحيث يكون primary key وايضا identity و ايضا فى الجدول LastName و City

وسمى هذا الجدول Employee

افتح مشروع جديد باستخدام الفيجوال استديو

فى صفحه ال Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

           

<br />

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">Check All</asp:LinkButton>

                       

   

<asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">UnCheck</asp:LinkButton><br />

<br />

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"

DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" ShowFooter="True">

<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

<Columns>

<asp:CommandField ShowEditButton="True" />

<asp:TemplateField HeaderText="Check">

<ItemTemplate>

<asp:CheckBox ID="CheckBox1" runat="server" />

</ItemTemplate>

<FooterTemplate>

 

</FooterTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="EmployeeID" InsertVisible="False" SortExpression="EmployeeID">

<EditItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Eval("EmployeeID") %>'></asp:Label>

</EditItemTemplate>

<FooterTemplate>

 

</FooterTemplate>

<ItemTemplate>

<asp:Label ID="Label2" runat="server" Text='<%# Bind("EmployeeID") %>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="LastName" SortExpression="LastName">

<EditItemTemplate>

<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("LastName") %>'></asp:TextBox>

</EditItemTemplate>

<FooterTemplate>

<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox> 

</FooterTemplate>

<ItemTemplate>

<asp:Label ID="Label3" runat="server" Text='<%# Bind("LastName") %>'></asp:Label>

</ItemTemplate>

</asp:TemplateField>

<asp:TemplateField HeaderText="City" SortExpression="City">

<EditItemTemplate>

<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("City") %>'

Width="109px">

<asp:ListItem Selected="True" Value="">-- Select --</asp:ListItem>

<asp:ListItem>Cairo</asp:ListItem>

<asp:ListItem>Alex</asp:ListItem>

<asp:ListItem>Tanta</asp:ListItem>

</asp:DropDownList>

</EditItemTemplate>

<ItemTemplate>

<asp:Label ID="Label1" runat="server" Text='<%# Bind("City") %>'></asp:Label>

</ItemTemplate>

<FooterTemplate>

<asp:DropDownList ID="DDLCity" runat="server" Width="120px">

<asp:ListItem Value="">-- Select --</asp:ListItem>

<asp:ListItem>Cairo</asp:ListItem>

<asp:ListItem>Alex</asp:ListItem>

<asp:ListItem>Tanta</asp:ListItem>

</asp:DropDownList> 

</FooterTemplate>

</asp:TemplateField>

</Columns>

<PagerTemplate>

 

</PagerTemplate>

<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />

<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />

<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />

<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />

<AlternatingRowStyle BackColor="White" />

</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TaskConnectionString %>"

DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = @EmployeeID" InsertCommand="INSERT INTO [Employees] ([LastName], [City]) VALUES (@LastName, @City)"

SelectCommand="SELECT * FROM [Employees]" UpdateCommand="UPDATE [Employees] SET [LastName] = @LastName, [City] = @City WHERE [EmployeeID] = @EmployeeID">

<DeleteParameters>

<asp:Parameter Name="EmployeeID" Type="Int32" />

</DeleteParameters>

<UpdateParameters>

<asp:Parameter Name="LastName" Type="String" />

<asp:Parameter Name="City" Type="String" />

<asp:Parameter Name="EmployeeID" Type="Int32" />

</UpdateParameters>

<InsertParameters>

<asp:Parameter Name="LastName" Type="String" />

<asp:Parameter Name="City" Type="String" />

</InsertParameters>

</asp:SqlDataSource>

 <asp:Button ID="btnMultipleRowDelete" runat="server" Text="Delete Rows" OnClick="btnMultipleRowDelete_Click" />

    

<asp:Button ID="btnEdit" runat="server" Text="Add New" Width="76px" OnClick="Button2_Click" />

 

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Hide" Width="64px" />

 

<asp:Button ID="Button2" runat="server" OnClick="Button2_Click1" Text="Show" Width="57px" /></div>

</form>

</body>

</html>

------------------------------------------------------------------------------------------------------

فى صفحه Default.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

// Delete Selected CheckBox button

protected void btnMultipleRowDelete_Click(object sender, EventArgs e)

{

foreach (GridViewRow row in GridView1.Rows)

{

CheckBox checkbox = (CheckBox)row.FindControl("CheckBox1");

if (checkbox.Checked == true)

{

int EmployeeID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);

SqlDataSource1.DeleteParameters["EmployeeID"].DefaultValue = EmployeeID.ToString();

SqlDataSource1.Delete();

}

}

}

// Add New Button

protected void Button2_Click(object sender, EventArgs e)

{

try

{

TextBox txtName = (TextBox)GridView1.FooterRow.FindControl("txtLastName");

DropDownList DDLCity = (DropDownList)GridView1.FooterRow.FindControl("DDLCity");

SqlDataSource1.InsertParameters["LastName"].DefaultValue = txtName.Text;

SqlDataSource1.InsertParameters["City"].DefaultValue = DDLCity.SelectedValue;

SqlDataSource1.Insert();

}

catch(Exception ex)

{

}

}

// Check All

protected void LinkButton1_Click(object sender, EventArgs e)

{

foreach (GridViewRow row in GridView1.Rows)

{

CheckBox checkbox = (CheckBox)row.FindControl("CheckBox1");

checkbox.Checked = true;

}

}

// Uncheck

protected void LinkButton2_Click(object sender, EventArgs e)

{

foreach (GridViewRow row in GridView1.Rows)

{

CheckBox checkbox = (CheckBox)row.FindControl("CheckBox1");

checkbox.Checked = false;

}

}

//-- Hide button

protected void Button1_Click(object sender, EventArgs e)

{

GridView1.FooterRow.Visible = false;

}

// Show button

protected void Button2_Click1(object sender, EventArgs e)

{

GridView1.FooterRow.Visible = true;

}

}

انا استخدم لغه السي شارب وارجو ان اكون افدتك تحياتى

Yasser Zaid

Web Developer

My Blog

Telecome Egypt

#3

عفوا اخي ياليت ترفق الملف المشروح من اجل الفائدة الاكثر

#4

فى البدايه انشي قاعده بيانات كما ذكرت سابقا

وقد ارفقت الكود لكم

تحياتى

Desktop.rar

Yasser Zaid

Web Developer

My Blog

Telecome Egypt

هذا الموضوع مغلق.

مواضيع مشابهة