开发者

unable to update gridview

开发者 https://www.devze.com 2022-12-25 21:59 出处:网络
Please help ,i have added update/edit command button in gridview so to update data in my sql server database but am unable to do it. Data is not updated in database .

Please help ,i have added update/edit command button in gridview so to update data in my sql server database but am unable to do it. Data is not updated in database . ======code for onrowupdate======================================== protected void gRowUpdate(object sender, GridViewUpdateEventArgs e) { Books b = null; b = new Books(); DataTable dt=null; GridView g = (GridView)sender; try { dt=new DataTable(); b = new Books(); b.author = Convert.ToString(g.Rows[e.RowIndex].FindControl("Author")); b.bookID = Convert.ToInt32(g.Rows[e.RowIndex].FindControl("BookID")); b.title = Convert.ToString(g.Rows[e.RowIndex].FindControl("Title")); b.price = Convert.ToDouble(g.Rows[e.RowIndex].FindControl("Price")); // b.rec = Convert.ToString(g.Rows[e.RowIndex].FindControl("Date_of_reciept")); b.ed = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.bill = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.cre_by = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.src = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.pages = Convert.ToInt32(g.Rows[e.RowIndex].FindControl("Edition")); b.pub = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.mod_by = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.remark = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); // b.year = Convert.ToString(g.Rows[e.RowIndex].FindControl("Edition")); b.updatebook(b); g.EditIndex = -1; dt = b.GetAllBooks(); g.DataSource = dt; g.DataBind(); } catch (Exception ex) { throw (ex); } finally { b = null; }

} ===================My stored procedure for update book able to update database by exec in sqlserver mgmt studio========================== set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go

ALTER PROCEDURE [dbo].[usp_updatebook] @bookid bigint, @author varchar(50), @title varchar(50), @price bigint, @src_equisition varchar(50), @bill_no varchar(50), @publisher varchar(50), @pages bigint, @remark varchar(50), @edition varchar(50), @created_by varchar(50), @modified_by varchar(50) /@date_of_reciept datetime, @year_of_publication datetime/ AS declare @modified_on datetime

set @modified_on=getdate()

UPDATE books

SET

author=@author, title=@title, price=@price,

src_equisition=@src_equisition, bill_no=@bill_no, publisher=@publisher, /Date_of_reciept=@date_of_reciept,/ pages=@pages, remark=@remark, edition=@edition, /Year_of_publication=@year_of_publication,/

created_by=@created_by, modified_on=@modified_on, modified_by=@modified_by

WHERE bookid=@bookid ========================class library function for update====================

    public void updatebook(Books b)
    {
开发者_StackOverflow        DataAccess dbAccess = null;
        SqlCommand cmd = null;
        try
        {
            dbAccess = new DataAccess();
            cmd = dbAccess.GetSQLCommand("usp_updatebook", CommandType.StoredProcedure);
            cmd.Parameters.Add("@bookid", SqlDbType.VarChar, 50).Value = b.bookID;
            cmd.Parameters.Add("@author", SqlDbType.VarChar, 50).Value = b.author;
           cmd.Parameters.Add("@title", SqlDbType.VarChar, 50).Value = b.title;
            cmd.Parameters.Add("@price", SqlDbType.Money).Value = b.price;
            cmd.Parameters.Add("@publisher", SqlDbType.VarChar, 50).Value = b.pub;
          // cmd.Parameters.Add("@year_of_publication", SqlDbType.DateTime).Value =Convert.ToDateTime( b.year);
            cmd.Parameters.Add("@src_equisition", SqlDbType.VarChar, 50).Value = b.src;
            cmd.Parameters.Add("@bill_no", SqlDbType.VarChar, 50).Value = b.bill;
            cmd.Parameters.Add("@remark", SqlDbType.VarChar, 50).Value = b.remark;
            cmd.Parameters.Add("@pages", SqlDbType.Int).Value = b.pages;
            cmd.Parameters.Add("@edition", SqlDbType.VarChar, 50).Value = b.ed;
           // cmd.Parameters.Add("@date_of_reciept", SqlDbType.DateTime).Value = Convert.ToDateTime(b.rec);
            // cmd.Parameters.Add("@created_on", SqlDbType.DateTime).Value = Convert.ToDateTime(b.cre_on);
            cmd.Parameters.Add("@created_by", SqlDbType.VarChar, 50).Value = b.cre_by;
            //cmd.Parameters.Add("@modified_on", SqlDbType.DateTime).Value = Convert.ToDateTime(b.mod_on);
            cmd.Parameters.Add("@modified_by", SqlDbType.VarChar, 50).Value = b.mod_by;

            cmd.ExecuteNonQuery();

        }
        catch (Exception ex)
        {
            throw (ex);
        }
        finally
        {
            if (cmd.Connection != null && cmd.Connection.State == ConnectionState.Open)
                cmd.Connection.Close();
            dbAccess = null;
            cmd = null;
        }

}

I have also tried to do update by following way protected void gv1_updating(object sender, GridViewUpdateEventArgs e) { GridView g = (GridView)sender; abc a = new abc(); DataTable dt = new DataTable(); try {

            a.cd_Id = Convert.ToInt32(g.DataKeys[e.RowIndex].Values[0].ToString());
            //TextBox b = (TextBox)g.Rows[e.RowIndex].Cells[0].FindControl("cd_id");
            TextBox c = (TextBox)g.Rows[e.RowIndex].Cells[2].FindControl("cd_name");
            TextBox d = (TextBox)g.Rows[e.RowIndex].Cells[3].FindControl("version");
            TextBox f = (TextBox)g.Rows[e.RowIndex].Cells[4].FindControl("company");
            TextBox h = (TextBox)g.Rows[e.RowIndex].Cells[6].FindControl("created_by");
            TextBox i = (TextBox)g.Rows[e.RowIndex].Cells[8].FindControl("modified_by");

            //a.cd_Id = Convert.ToInt32(b.Text);
            a.cd_name = c.Text;
            a.ver = d.Text;
            a.comp = f.Text;
            a.cre_by = h.Text;
            a.mod_by = i.Text;
            a.updateDigi(a);
            g.EditIndex = -1;
            dt = a.GetAllDigi();
            g.DataSource = dt;
            g.DataBind();

        }
        catch(Exception ex)
        {
            throw (ex);
        }
        finally
        {
            dt = null;
            a = null;
            g = null;
        }



    }

=================== but have error of Index out of range exception=========

please do reply,thanxs in advance


The IndexOutOfRangeException is probably due to this code:

        a.cd_Id = Convert.ToInt32(g.DataKeys[e.RowIndex].Values[0].ToString());
        TextBox c = (TextBox)g.Rows[e.RowIndex].Cells[2].FindControl("cd_name");
        TextBox d = (TextBox)g.Rows[e.RowIndex].Cells[3].FindControl("version");
        TextBox f = (TextBox)g.Rows[e.RowIndex].Cells[4].FindControl("company");
        TextBox h = (TextBox)g.Rows[e.RowIndex].Cells[6].FindControl("created_by");
        TextBox i = (TextBox)g.Rows[e.RowIndex].Cells[8].FindControl("modified_by");

More precisely the part where the indexing is occurring. Are you sure that you have 9 Cells (indexes 0 to 8) ?

0

精彩评论

暂无评论...
验证码 换一张
取 消