asp.net学习之再论sqlDataSource
本节从上一节没有阐述的几个方面,再讨论一下SqlDataSource的用法及注意的事项。
上一节的链接地址如下:http://www.cnblogs.com/shipfi/archive/2009/10/15/1584093.html
1. SqlDataSource的参数方向(Parameters Direction)
SqlDataSource的参数可以设置方向,默认值为INPUT。如果参数为INPUT,是无法从参数取回任何返回值的,如果要调用的存储过程有返回值时,必须设置参数具有Output方向。
参数包括了四个方向:
● Input : 参数仅能输入
● InputOutput:参数可同时输入或输出
● Output:参数仅能输出
● ReturenValue:表示参数为存储过程、内置功能或使用定义函数等返回的操作。[注意是返回值]
参数方向在aspx页面中的设定就不讲了,设定相应的Direction属性就行了,比较简单,如果在程序中动态设定的话,使用以下代码就可以了:
QueryStringParameter paramProduct = new QueryStringParameter("ProductName",TypeCode.String,"ProductName");
paramProduct.Direction = ParameterDirection.Input;
例1: 演示如何使用存储过程,并且带Output参数的使用
(
@return_row int output, --返回行数
@pclass_parent_id int = –1 --父目录id
)
as
begin
if @pclass_parent_id=-1
select * from product_class;
else
select * from product_class where product_class_parent=@pclass_parent_id;
set @return_row = @@rowcount;
return 0;
end
--测试一下存储过程是否OK
declare @ret_row int
exec dawnSP_SelectPClass @ret_row output,-1; --@ret_row后面一定要加output关键字
select @ret_row;
2 <script runat=”server”>
3 protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
4 {
5 // 存储过程中的第一个参数就是Output参数,所以取e.Command.Parameters[0]
6 TextBox1.Text = e.Command.Parameters[0].Value.ToString();
7 }
8 </script>
9
10 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <!-- 存储过程返回的return_row将显示在这个TextBox中 -->
11 <asp:SqlDataSource ID="SqlDataSource1" runat="server"
12 ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>"
13 SelectCommand="dawnSP_SelectPClass" SelectCommandType="StoredProcedure"
14 onselected="SqlDataSource1_Selected"> <!-- 需要通过OnSelected事件、把return_row参数的值取出来 -->
15 <SelectParameters>
16 <asp:Parameter Name="return_row" DefaultValue="0" DbType="Int32" Direction="Output" />
17 <asp:QueryStringParameter DefaultValue="-1" Name="pclass_parent_id" DbType="Int32"
18 QueryStringField="p_classid" Direction="Input" />
19 <!-- 注:Parameter及QueryStringParameter的Name一定要和存储过程中的参数名相匹配,否则会提示参数设定不正确 -->
20 </SelectParameters>
21 </asp:SqlDataSource>
2. 利用FilterExpression筛选数据
在SqlDataSource中进行数据的筛选有两种方法,一是使用SelectCommand机制进行数据筛选,即在SQL语句中加入where子句。二是使用FilterExpression进行筛选。
使用FilterExpression机制进行筛选是使用DataView对象中的筛选机制。效率不高,但比较简便。进行数据筛选只要在SqlDataSource控件中加入FilterExpression属性就可以了。如下所示:
例2:使用FilterExpression筛选数据
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DawnEnterpriseDBConnectionString %>"
SelectCommand="SELECT [product_id], [product_code], [product_name], [product_factory] FROM [product_main]"
FilterExpression="product_factory like '%{0}%'" onfiltering="SqlDataSource1_Filtering"
>
<FilterParameters>
<asp:ControlParameter Name="fp_pro_factory" ControlID="tb_factory" PropertyName="Text" />
</FilterParameters>
</asp:SqlDataSource>
以上,FilterExpression中引用的参数必须指定是{0}这样的格式,引用@paramName这样的形式我试验过,好像行不通,不知道为什么。有待解释。
以下是MSDN对FilterExpression的解释:
可以在 FilterExpression 属性中包括参数。如果参数类型为字符串类型或字符类型,则应将参数放在单引号中。如果参数是数值类型的,则不需要引号。
例3:动态取得和添加FilterExpression的参数
protected void ObjectDataSource1_Filtering(object sender, ObjectDataSourceFilteringEventArgs e)
{
if(e.ParameterValues.count>0)
Label1.Text = e.ParameterValues[0].ToString();
if (Textbox1.Text == "") {
e.ParameterValues.Clear();
e.ParameterValues.Add("FullName", "Nancy Davolio");
}
}
</script>
<asp:objectdatasource id="ObjectDataSource1" runat="server"
selectmethod="GetAllEmployeesAsDataSet" typename="Samples.AspNet.CS.EmployeeLogic"
filterexpression="FullName='{0}'" OnFiltering="ObjectDataSource1_Filtering">
<filterparameters>
<asp:formparameter name="FullName" formfield="Textbox1" defaultvalue="Nancy Davolio" />
</filterparameters>
</asp:objectdatasource>
SqlDataSource中的FilterExpression运作的原理是通过DataView,那么,如何直接通过DataView对象进行数据的过滤呢。
例4:在程序中通过DataView进行数据的过滤
{
if(!IsPostBack){
ConnectionStringSettings connSetting = WebConfigurationManager.ConnectionStrings["DawnEnterpriseDBConnectionString"];
SqlConnection sqlConn = new SqlConnection(connSetting.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("select * from product_class", sqlConn);
//创建DataTable
DataTable dt = new DataTable();
dt.TableName = "product_class";
da.Fill(dt);
//创建DataView,进行过滤
DataView dv = new DataView(dt);
dv.RowFilter = "product_class_parent=1";
//指定数据源
GridView2.DataSource = dv;
GridView2.DataBind();
}
}
3.处理并发
SqlDataSource控件的ConficatDetection属性和OldValuesParameterFormatString属性被赋值的情况下,这两个属性会使SqlDataSource控件为每个个数据列保持此列的原始值和修改后的值,以此来解决并发的问题。
ConficatDetection可以为以下两个值之一:
● CompareAllValues: 为每一列保持修改值和原始值
● OverwritingChanges: 将会导致SqlDataSource控件直接使用新值覆盖到数据列中
OldValuesParameterFormatStrin属性用来为列的原始值提供唯一的名称。
示例如下:
ConnectionString=”<%$ ConnectionStrings:Movies %>”
SelectCommand=”SELECT Id,Title,Director FROM Movies”
UpdateCommand=”UPDATE Movies SET Title=@Title, Director=@Director WHERE Id=@original_Id AND
Title=@original_Title AND Director=@original_Director”
Runat=”server” OnUpdated=”srcMovies_Updated” />
转载于:https://www.cnblogs.com/lonelyxmas/p/3707561.html
asp.net学习之再论sqlDataSource相关推荐
- asp.net学习之再论sqlDataSource 1
asp.net学习之再论sqlDataSource 本节从上一节没有阐述的几个方面,再讨论一下SqlDataSource的用法及注意的事项. 上一节的链接地址如下:http://www.cnb ...
- asp.net学习之再论sqlDataSource 2
2. 利用FilterExpression筛选数据 在SqlDataSource中进行数据的筛选有两种方法,一是使用SelectCommand机制进行数据筛选,即在SQL语句中加入where子句.二是 ...
- asp.net学习资源汇总
名称:快速入门 地址:http://chs.gotdotnet.com/quickstart/ 描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例 ...
- ASP.Net学习笔记015--ASP.Net中使用Cookie
ASP.Net学习笔记015--ASP.Net中使用Cookie 表单数据欺骗: 原理跟收到欺骗短信一样,移动信号塔[基站],伪装的移动信号塔会屏蔽移动信号,并且 在信号范围内的手机会自动切换为接收伪 ...
- ASP.Net学习笔记013--ViewState初探2
ASP.Net学习笔记013--ViewState初探2 上课讲的viewstate,由于需要跟后台服务器进行传值,需要封装很多隐藏列,比如100条数据,就会有100个viewstate 如果用在一些 ...
- Asp.Net 学习资源列表 [转]
转:http://blog.csdn.net/liujien/archive/2005/11/23/535225.aspx Asp.Net 学习资源列表 名称:快速入门 地址:http://chs. ...
- ASP.NET学习篇之——与ASP的区别
概述 在上一篇文章中我们将框架进行了讲解,这篇文字我们重点来学习下ASP与ASP.NET的区别. 执行效率 在讲解之前我们先来理解一下程序执行的两种方式,分别是解释性程序执行方式和编译性程序执行方式. ...
- ASP.net 学习路线(详细)
ASP.net 学习路线(详细) 浏览:5632 | 更新:2013-12-13 16:33 | 标签: asp.net 百度经验:jingyan.baidu.com .net学习路线 入门篇1. ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
最新文章
- 学习笔记Kafka(七)—— Kafka 与Spark集成 —— 原理介绍与开发环境配置、实战
- Dapper介绍--Micro-ORM
- c++编译时候fatal error C1075: end of file found before the left brace '{' at
- 写给准备学习Linux的人
- matlab画爱心代码分享
- 【HASPDOG】卸载
- 迅雷赚钱宝变砖TTL修复教程赚钱宝刷机
- ffmpeg 安装教程
- 五大主流浏览器的介绍
- VS2013下载及安装
- 郭天祥的10天学会51单片机_第二节
- 生态功能区划方法之二:生态服务功能重要性评价
- 大数据和人工智能未来发展趋势
- 二维码原理与编码介绍
- 12-11 网易实习一面
- mysql config win.h_mysql-python安装错误:无法打开包含文件'config-win.h'
- Cannot load excludes configuration file /WEB-INF/decorators.xml as specified in sitemesh.xml or
- 成都奔驰原厂无钥匙舒适进入改装 蔚一车改
- 原生JS 实现放大镜
- 如果input标签中有runat=”server”,则在服务端,Request.Form接收不到