在后台怎样修改数据源的"whereClause"
来源:互联网 发布:域名申请流程 编辑:程序博客网 时间:2024/06/02 23:27
以下是使用了WEB的数据源控件:
在aspx页面是这样的:
一般情况下,.nettiers是生成这样的代码:(请注意是"CustomParameter")
<Parameters>
<data:CustomParameter Name="WhereClause"../>
</Parameters>
</data:EmployeesDataSource>
然而要实现后台修改数据源的"whereClause",则要把<data:CustomParameter Value="Country='USA'"...> 改为
<data:SqlParameter DefaultValue="Country='USA'"...> , 在这种情况下Value不可用,只会有DefaultValue,但DefaultValue没有选出相应记录的功能.
<DeepLoadProperties Method="IncludeChildren" Recursive="False">
<Types>
<data:EmployeesProperty Name="Employees" />
<%--<data:EmployeesProperty Name="OrdersCollection" />--%>
<%--<data:EmployeesProperty Name="EmployeesCollection" />--%>
<%--<data:EmployeesProperty Name="EmployeeTerritoriesCollection" />--%>
<%--<data:EmployeesProperty Name="TerritoryIdTerritoriesCollection_From_EmployeeTerritories" />--%>
</Types>
</DeepLoadProperties>
<Parameters>
<data:SqlParameter Name="WhereClause" ConvertEmptyStringToNull="false" UseParameterizedFilters="false" />
<data:SqlParameter Name="OrderByClause" ConvertEmptyStringToNull="false" />
<asp:ControlParameter Name="PageIndex" ControlID="GridView1" PropertyName="PageIndex" Type="Int32" ></asp:ControlParameter>
<asp:ControlParameter Name="PageSize" ControlID="GridView1" PropertyName="PageSize" Type="Int32" ></asp:ControlParameter>
<data:SqlParameter Name="RecordCount" Type="Int32" />
</Parameters>
</data:EmployeesDataSource>
后台代码:
parameter.Column = EmployeesColumn.HireDate;
parameter.BuilderExpression = StringBuilderExpression.AppendEquals;
parameter.DefaultValue = this.TextBox1.Text;
(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter);
以下是通过时间范围修改whereclause:
{
EmployeesExpressionBuilder parameter = new EmployeesExpressionBuilder();
parameter.Column = EmployeesColumn.Country;
parameter.BuilderExpression = StringBuilderExpression.AppendEquals;
parameter.DefaultValue = "USA";
(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter);
}
protected void Button1_Click(object sender, EventArgs e)
{
EmployeesExpressionBuilder parameter1 = new EmployeesExpressionBuilder();
parameter1.Column = EmployeesColumn.HireDate;
parameter1.BuilderExpression = StringBuilderExpression.AppendGreaterThanOrEqual;
parameter1.DefaultValue = this.TextBox1.Text;
EmployeesExpressionBuilder parameter2 = new EmployeesExpressionBuilder();
parameter2.Column = EmployeesColumn.HireDate;
parameter2.BuilderExpression = StringBuilderExpression.AppendLessThanOrEqual;
parameter2.DefaultValue = this.TextBox2.Text;
(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter1);
(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter2);
//************************************************************************************************************
//查询方法五:
//SqlFilterBuilder<EmployeesColumn> sqlfilter = new SqlFilterBuilder<EmployeesColumn>();
//sqlfilter.AppendRange(EmployeesColumn.HireDate, this.TextBox1.Text, this.TextBox2.Text);
//int cnt = 0;
//TList<Employees> List = DataRepository.EmployeesProvider.GetPaged(sqlfilter.ToString(), null, 0, 20, out cnt);
//this.GridView1.DataSource = List;
//this.GridView1.DataBind();
//“GridView1”上同时定义了 DataSource 和 DataSourceID。请移除一个定义。
}
}
又或者直接在ASPX页面是修改WhereClause:
<data:EmployeesDataSource id="EmployeesDataSource" runat="server" EnableDeepLoad="True" EnableSorting="True" EnablePaging="True" SelectMethod="GetPaged">
<DeepLoadProperties Method="IncludeChildren" Recursive="False">
<Types>
<data:EmployeesProperty Name="Employees" />
<%--<data:EmployeesProperty Name="OrdersCollection" />--%>
<%--<data:EmployeesProperty Name="EmployeesCollection" />--%>
<%--<data:EmployeesProperty Name="EmployeeTerritoriesCollection" />--%>
<%--<data:EmployeesProperty Name="TerritoryIdTerritoriesCollection_From_EmployeeTerritories" />--%>
< pes>
</DeepLoadProperties>
<Parameters>
<data:CustomParameter Name="WhereClause" Value="Country='USA'" ConvertEmptyStringToNull="false" />
<data:CustomParameter Name="OrderByClause" Value="EmployeeId DESC" ConvertEmptyStringToNull="false" />
<asp:ControlParameter Name="PageIndex" ControlID="GridView1" PropertyName="PageIndex" Type="Int32" ></asp:ControlParameter>
<asp:ControlParameter Name="PageSize" ControlID="GridView1" PropertyName="PageSize" Type="Int32" ></asp:ControlParameter>
<data:CustomParameter Name="RecordCount" Value="0" Type="Int32" />
</Parameters>
</data:EmployeesDataSource>
以上问题总结如下:
1.<data:CustomParameter...> 与
<data:SqlParameter...> SqlParameter,CustomParameter主要区别是?
2.用了<data:SqlParameter...> 就不能用 Value="Country='USA'",那么我要页面加载的时候是不是要在 Page_Load事件中写同类似的事件?
答:可以在Page_Load事件中写入
parameter.Column = EmployeesColumn.Country;
parameter.BuilderExpression = StringBuilderExpression.AppendEquals;
parameter.DefaultValue = "USA";
(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter);
3.(EmployeesDataSource.Parameters[0] as SqlParameter).Filters.Add(parameter);这句它就会自动地绑定.
4.记得加上UseParameterizedFilters="false" !!!!
5.http://www.cnblogs.com/iCaca/archive/2007/07/10/812632.html 前台可参考这里,还要感谢icaca的帮忙!
- 在后台怎样修改数据源的"whereClause"
- 当ListView控件在后台绑定数据源时,用DataPager控件分页需要注意的问题
- IQueryFilter的WhereClause详解
- 在后台里修改配置文件(web.config)
- 在后台修改前台模板文件
- 怎样在后台找到前台的table空间并设置table中单元格是否显示
- 关于数据在后台的删除修改(代码有错误等待更正 不完全)
- asp.net集成百度ueditor富文本,在后台获取ueditor修改后的数据
- GridView 模板列 在后台获取该行某控件的值 例如批量修改
- 怎样防止App在后台运行,点击应用桌面图标重新启动?
- 怎样防止App在后台运行,点击应用桌面图标重新启动?
- 怎样在后台显示状态是“开启” 或者 “关闭”?
- 怎样防止App在后台运行,点击应用桌面图标重新启动?
- 怎样防止App在后台运行,点击应用桌面图标重新启动
- (模板修改功能)在后台直接修改代码
- (小技巧)解决JS修改服务器控件值在后台无法获取修改后的值的问题
- 线程的应用,在后台搜索目录
- 在后台执行前台的方法
- USB设备监控深入分析
- Linux下共享库(SO)有关的几个环境变量
- ETS官方Issue主题范文36篇
- ADO CommandType 属性
- Linux控制台(文本模式)下提高工作效率的快捷键
- 在后台怎样修改数据源的"whereClause"
- 守护进程之编程规则
- ADO Execute 方法 (ADO Connection)
- GCC 生成的符号表调试信息剖析
- 数据库规范化与优化问题讲解
- 开源项目打包下载之《C项目大全》
- java面试笔试题大汇总 ~很全面收藏
- LAMP和WAMP的安装和配置(PHP编程)
- pku1321 棋盘问题