Friday, July 11, 2008

Delete multiple record from gridview by single database interaction

//write code on page load
if (!IsPostBack)
{
binddata();
}

// Bind Function

public void binddata()
{
string strSql = " select * from test_test";
ds1 = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter(strSql, con);
adp.Fill(ds1, "aa");
GridView1.DataSource = ds1.Tables[0];
GridView1.DataBind();
}

// write code in button click

StringBuilder store_id = new StringBuilder();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
CheckBox c = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
if (c.Checked)
{
store_id.Append(GridView1.Rows[i].Cells[1].Text+"','");
}
}
string c_id = store_id.ToString();
string ss = "delete from test_test where c_id in ('"+c_id+"')";
SqlCommand cmd = new SqlCommand(ss,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
binddata();

1 comment:

amrita gupta said...

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go






ALTER PROCEDURE [dbo].[procCOUNT]
-- @number int,
@Error int OUTPUT,
@ErrorMessage varchar(10) OUTPUT

AS
BEGIN

SET NOCOUNT ON;

DECLARE @Count int
DECLARE @Counter int
DECLARE @QueryID int
DECLARE @QueryTo varchar(MAX)
DECLARE @Count1 int
DECLARE @Counter1 int
DECLARE @number int
DECLARE @Login varchar(50)



-- SELECT LARID,LarType as [LAR Category],QueryID,Query,convert(char,CRTN_DT,103)
-- as [Creation Date] INTO #temp1 FROM tbl_QueryMaster WHERE CRTN_BY=@LoginID
-- ORDER BY QueryID DESC

SELECT distinct number INTO #temp1 FROM demo
-- SELECT * FROM #temp1

SELECT @Count=Count(*) FROM #temp1

SET @Counter=1

DECLARE curQuery CURSOR
FOR
SELECT number FROM #temp1

OPEN curQuery

SET @QueryTo=''

FETCH NEXT FROM curQuery INTO @QueryID

SELECT [name] INTO #temp2 FROM demo WHERE number=@QueryID

SELECT @count1=Count(*) FROM #temp2

SET @Counter1=1

DECLARE curQueryTo CURSOR
FOR
SELECT [name] FROM #temp2

OPEN curQueryTo

FETCH NEXT FROM curQueryTo INTO @Login

SET @QueryTo= @Login

WHILE(@@FETCH_STATUS=0 AND @Counter1<@Count1)

BEGIN

FETCH NEXT FROM curQueryTo INTO @Login
SET @QueryTo=@QueryTo + ',' + @Login
SET @Counter1=@Counter1+1
END
SELECT @QueryID as QueryID,@QueryTo as QueryTo INTO #temp3
CLOSE curQueryTo
DEALLOCATE curQueryTo
WHILE(@@FETCH_STATUS=0 AND @Counter<@Count)

BEGIN

SET @QueryTo=''

FETCH NEXT FROM curQuery INTO @QueryID
Truncate table #temp2
INSERT INTO #temp2 select [name] FROM demo WHERE number=@QueryID

SELECT @count1=Count(*) FROM #temp2

SET @Counter1=1

DECLARE curQueryTo1 CURSOR
FOR
SELECT [name] FROM #temp2

OPEN curQueryTo1

FETCH NEXT FROM curQueryTo1 INTO @Login

SET @QueryTo= @Login

WHILE(@@FETCH_STATUS=0 AND @Counter1<@Count1)

BEGIN

FETCH NEXT FROM curQueryTo1 INTO @Login
SET @QueryTo=@QueryTo + ',' + @Login

SET @Counter1=@Counter1+1

END

INSERT INTO #temp3 values(@QueryID,@QueryTo)

CLOSE curQueryTo1
DEALLOCATE curQueryTo1

SET @Counter=@Counter+1

END

CLOSE curQuery
DEALLOCATE curQuery

SELECT * FROM #temp3

END