我有一个sql存储过程,它接受3个参数并充当搜索工具,它们都可以正常工作。我还有一个带有3个相应文本框的asp页面,一个网格视图,一个指向存储过程的sql源和一个按钮但是我被困在我的按钮后面放置什么代码以使网格视图显示搜索结果
我尝试了sqlDataSource1.Select(DataSourceSelectArguments.Empty),因为我认为select参数是由页面上的sql数据源处理的,但它并没有拉回任何东西。
答案 0 :(得分:2)
点击按钮时:
GridView1.DataSourceID = "sqlDataSource1"
GridView1.DataBind();
点击按钮将导致回发,您的网格将随结果一起更新。
答案 1 :(得分:0)
设置SqlCommand,并将其CommandType设置为StoredProcedure。创建命令对象时使用数据库连接。
将三个参数添加到命令中,设置它们的值,然后执行它。 确保您在Try / Catch块中执行此操作并关闭Finally块中的连接,否则您最终可能会关闭不关闭的连接。 (这已经咬过了我过去常常参加过的几支球队)
根据您的要求执行时,您需要选择正确的方法。 (ExecuteNonQuery,ExecuteScalar或ExecuteReader)查看文档并找出最适合此功能的内容。
我个人不喜欢在页面上拖放SqlDataSources。我更喜欢在代码隐藏中工作,因为我觉得它更容易调试和错误处理。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand%28v=vs.110%29.aspx
样品:
SqlCommand command = new SqlCommand(
"myProcedure", connection);
command.commandType=CommandType.StoredProcedure;
command.Parameters.Add(new SqlParamater("name",datatype,length));
cmd.Parameters["name"].Value = "value";
...
try
{
connection.Open();
cmd.ExecuteScalar(); //or whatever method you need
}
catch(exception xx)
{
//do your error handling here
}
finally
{
connection.Close(); //Remember to do this here!
}