使用存储过程进行网格视图绑定 [英] Grid View Binding using Stored Procedure

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

问题描述

sc.Open();
        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter("masteriud",sc);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        SqlParameter param = new SqlParameter("@flag", 2);
        cmd.Parameters.AddWithValue("@flag", 2);
        da.SelectCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int));
        da.SelectCommand.Parameters["@Id"].Value = (txtempid.Text).Trim();
        da.SelectCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar));
        da.SelectCommand.Parameters["@Name"].Value = (txtempname.Text).Trim();
        da.SelectCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.VarChar));
        da.SelectCommand.Parameters["@Address"].Value = (txtempaddr.Text).Trim();
        DataSet ds = new DataSet();
        da.Fill(ds, "Memployee");
        GridView1.DataSource = ds.Tables["Memployee"];
        GridView1.DataBind();
        da.Dispose();
        sc.Close();



我得到这样的错误 -



程序或函数''masteriud''需要参数''@flag'',这是没有提供的。



但是我有参数但仍然显示错误



请帮助!!!

谢谢


Error i am getting like this -

Procedure or Function ''masteriud'' expects parameter ''@flag'', which was not supplied.

but i have the parameter but still it is showing error

Please Help!!!
Thanks

推荐答案



仔细查看你的代码:你会发现你根本没有使用过命令对象cmd



试一试:



Hi,
Look into your code carefully: you will find that you have not at all used command object "cmd"

Try this:

sc.Open();
        SqlCommand cmd = new SqlCommand();
        SqlDataAdapter da = new SqlDataAdapter("masteriud",sc);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        //SqlParameter param = new SqlParameter("@flag", 2);
        //cmd.Parameters.AddWithValue("@flag", 2);

        da.SelectCommand.Parameters.Add(new SqlParameter("@flag", SqlDbType.Int));
        da.SelectCommand.Parameters["@flag"].Value = 2;


        da.SelectCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int));
        da.SelectCommand.Parameters["@Id"].Value = (txtempid.Text).Trim();
        da.SelectCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar));
        da.SelectCommand.Parameters["@Name"].Value = (txtempname.Text).Trim();
        da.SelectCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.VarChar));
        da.SelectCommand.Parameters["@Address"].Value = (txtempaddr.Text).Trim();
        DataSet ds = new DataSet();
        da.Fill(ds, "Memployee");
        GridView1.DataSource = ds.Tables["Memployee"];
        GridView1.DataBind();
        da.Dispose();
        sc.Close();





一切顺利..

--AK



All the best..
--AK


SqlParameter param = new SqlParameter("@flag", 2);
        cmd.Parameters.AddWithValue("@flag", 2);



您已经创建了一个SQLCommand并为其分配了参数@flag。您永远不会使用此命令创建。保留此参数,您直接为Adapter创建了其他参数并使用它。使用SQLCommand为它定义所有需要的参数或者也将@flag参数添加到适配器。


You have created a SQLCommand and assigned parameter @flag to it. You never use this command created. Leaving this parameter, you created other directly for Adapter and used it. Either use SQLCommand defining all the needed parameters for it OR add @flag parameter to adapter too.


问题是cmd对象没有分配给da.SelectCommand。



简单地说,删除行

The issue is cmd object is not assigned to da.SelectCommand.

Simply,Remove the lines
SqlCommand cmd = new SqlCommand();
 cmd.Parameters.AddWithValue("@flag", 2);





添加行



Add the line

da.SelectCommand.Parameters.Add(param);


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

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