使用存储过程编辑link_button网格视图 [英] edit link_button grid view with store procedure

查看:104
本文介绍了使用存储过程编辑link_button网格视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是存储过程的新手,所以如果有很小的错误,也可以帮助我解决它...
我正在使用链接按钮在网格视图中进行编辑数据,我的存储过程看起来像...

i am very new to store procedure so if there is small error then also help me to solve it......
i have doing Edit data within grid view with link button my store procedure look like...

ALTER procedure [dbo].[editstudent] @sid int, @firstname varchar(50),@lastname varchar(50),@gender varchar(50),@address varchar(50),@phone varchar(50),@dob datetime,@email varchar(50)
as
update student set  firstname=@firstname, lastname=@lastname, gender=@gender, address=@address, phone=@phone, dob=@dob, email=@email where sid=@sid


******************************************************
和该链接按钮的aspx.cs页面看起来像.....


*************************************************
and aspx.cs page for that link button look like.....

protected void linkedit_Click(object sender, EventArgs e)
        {
            LinkButton lnkButton = sender as LinkButton;
            GridViewRow row = (GridViewRow)lnkButton.NamingContainer;
            txtsid.Text = row.Cells[2].Text;
            SqlCommand cm  = new SqlCommand("editstudent", cn);
            cm.CommandType = CommandType.StoredProcedure;
            cm.Parameters.Add("@sid", SqlDbType.Int).Value = txtsid.Text;
            cn.Open();
            SqlDataReader dr = cm.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    txtsid.Text = dr["Sid"].ToString();
                    txtfirstname.Text = dr["Firstname"].ToString();
                    txtlastname.Text = dr["Lastname"].ToString();
                    txtgender.Text = dr["Gender"].ToString();
                    txtaddress.Text = dr["Address"].ToString();
                    txtphone.Text = dr["Phone"].ToString();
                    txtdob.Text = dr["Dob"].ToString();
                    txtemail.Text = dr["Email"].ToString();

                }
                dr.Close();
                cn.Close();
                fillgrid();
            }
            else
            {
                Response.Write("there is no data to edit");  
            }  

        }


但我看到过类似的错误.......
过程或函数"editstudent"需要未提供的参数"@firstname".
所以请帮助我解决它.......


but i have seen error like.......
Procedure or function ''editstudent'' expects parameter ''@firstname'', which was not supplied.
so plese help me to solve it ......

推荐答案

这仅用于编辑

This is only for edit

ALTER procedure [dbo].[editstudent] @sid int, @firstname varchar(50),@lastname varchar(50),@gender varchar(50),@address varchar(50),@phone varchar(50),@dob datetime,@email varchar(50)
as
update student set  firstname=@firstname, lastname=@lastname, gender=@gender, address=@address, phone=@phone, dob=@dob, email=@email where sid=@sid


******************************************************
这仅用于选择


*************************************************
this is only for selection

create procedure [dbo].[selectstudent]
@sid int
begin
select firstname,lastname,gender,address,phone,dob,email from student where
sid=@sid
end



和该链接按钮的aspx.cs页面看起来像.....



and aspx.cs page for that link button look like.....

protected void linkedit_Click(object sender, EventArgs e)
{
LinkButton lnkButton = sender as LinkButton;
GridViewRow row = (GridViewRow)lnkButton.NamingContainer;
txtsid.Text = row.Cells[2].Text;
SqlCommand cm = new SqlCommand("selectstudent", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add("@sid", SqlDbType.Int).Value = Convert.Int32(txtsid.Text.ToString());
cn.Open();
SqlDataReader dr = cm.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{

txtfirstname.Text = dr["Firstname"].ToString();
txtlastname.Text = dr["Lastname"].ToString();
txtgender.Text = dr["Gender"].ToString();
txtaddress.Text = dr["Address"].ToString();
txtphone.Text = dr["Phone"].ToString();
txtdob.Text = dr["Dob"].ToString();
txtemail.Text = dr["Email"].ToString();
 
}
dr.Close();


/////This record is updating This portion not effective working but useless because here initial from database ans send to database without any changes
SqlCommand cmd = new SqlCommand("editstudent", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@sid", SqlDbType.Int).Value = Convert.Int32(txtsid.Text.ToString());
cmd.Parameters.Add("@firstname", SqlDbType.Varchar).Value = txtfirstname.Text;
cmd.Parameters.Add("@lastname", SqlDbType.Varchar).Value = txtlastname.Text;
cmd.Parameters.Add("@gender", SqlDbType.Varchar).Value = txtgender.Text;
cmd.Parameters.Add("@address", SqlDbType.Varchar).Value = txtaddress.Text;
cmd.Parameters.Add("@phone", SqlDbType.Varchar).Value = txtphone.Text;
cmd.Parameters.Add("@dob", SqlDbType.DaeTime).Value = txtdob.Text;
cmd.Parameters.Add("@email", SqlDbType.Varchar).Value = txtemail.Text;
cmd.ExecutNonQuery()
cn.Close();
fillgrid();
}
else
{
Response.Write("there is no data to edit"); 
} 
 
}



希望这将有助于理解使用存储过程.



Hopefully It will help to understand using stored procedure.


您应该传递C#.net代码中的所有参数
包含行
you should pass all parameters from your C#.net code
include lines
cm.Parameters.Add("@firstname", SqlDbType.VarChar).Value = txtfirstname.Text;
        ...
//this way pass suitable values for all 7 parameters you have declared in store procedure



每当您在存储过程中定义参数时
您必须在执行存储过程时传递每个参数的值



when ever you define parameters in store procedure
you have to pass values for each parameter while executing store procedure

ALTER procedure [dbo].[editstudent] 
--this is parameter list
@sid int, 
@firstname varchar(50),
@lastname varchar(50),
@gender varchar(50),
@address varchar(50),
@phone varchar(50),
@dob datetime,@email varchar(50)
--you must pass values to above parameters while executing this store procedure
as
update student set  firstname=@firstname, lastname=@lastname, gender=@gender, address=@address, phone=@phone, dob=@dob, email=@email where sid=@sid


祝您编码愉快!
:)


Happy Coding!
:)


通过在linkitit按钮中执行以下代码进行检查,请单击

Check by doing follwoing code in linkedit button click

protected void linkedit_Click(object sender, EventArgs e)
{
LinkButton lnkButton = sender as LinkButton;
GridViewRow row = (GridViewRow)lnkButton.NamingContainer;
txtsid.Text = row.Cells[2].Text;
SqlCommand cm = new SqlCommand("selectstudent", cn);
cm.CommandType = CommandType.StoredProcedure;
cm.Parameters.Add("@sid", SqlDbType.Int).Value = txtsid.Text;
cn.Open();
SqlDataReader dr = cm.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
txtsid.Text = dr["Sid"].ToString();
txtfirstname.Text = dr["Firstname"].ToString();
txtlastname.Text = dr["Lastname"].ToString();
txtgender.Text = dr["Gender"].ToString();
txtaddress.Text = dr["Address"].ToString();
txtphone.Text = dr["Phone"].ToString();
txtdob.Text = dr["Dob"].ToString();
txtemail.Text = dr["Email"].ToString();
 
}
dr.Close();

SqlCommand cmd = new SqlCommand("editstudent", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@sid", SqlDbType.Int).Value = txtsid.Text;
cmd.Parameters.Add("@firstname", SqlDbType.Varchar).Value = txtfirstname.Text;
cmd.Parameters.Add("@lastname", SqlDbType.Varchar).Value = txtlastname.Text;
cmd.Parameters.Add("@gender", SqlDbType.Varchar).Value = txtgender.Text;
cmd.Parameters.Add("@address", SqlDbType.Varchar).Value = txtaddress.Text;
cmd.Parameters.Add("@phone", SqlDbType.Varchar).Value = txtphone.Text;
cmd.Parameters.Add("@dob", SqlDbType.DaeTime).Value = txtdob.Text;
cmd.Parameters.Add("@email", SqlDbType.Varchar).Value = txtemail.Text;
cmd.ExecutNonQuery()
cn.Close();
fillgrid();
}
else
{
Response.Write("there is no data to edit"); 
} 
 
}



您的程序应为



Your procedure should be

ALTER procedure [dbo].[editstudent] 
--this is parameter list
@sid int, 
@firstname varchar(50),
@lastname varchar(50),
@gender varchar(50),
@address varchar(50),
@phone varchar(50),
@dob datetime,@email varchar(50)
--you must pass values to above parameters while executing this store procedure
as
update student set  firstname=@firstname, lastname=@lastname, gender=@gender, address=@address, phone=@phone, dob=@dob, email=@email where sid=@sid


这篇关于使用存储过程编辑link_button网格视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆