编程设置ObjectDataSource的参数值

合集下载

scott笔记

scott笔记

重要属性:RowState:来决定这些DataRow是否被改动过,或是新记录,或是被删除的记录,然后为每个记录发出合适的数据库命令。

InsertCommand:向数据库发出对应的INSERT命令。

UpdateCommand:向数据库发出对应的UPDATE命令。

DeleteCommand:向数据库发出对应的DELETE命令。

ExecuteMode:查询的ExecuteMode。

Read:返回数据行、Scalar:返回单个值、NonQuery:返回一个整数,指受影响的记录数。

重要方法:为GridView指定数据源:GridView1.DataSource = productsAdapter.GetProducts();为GridView 绑定数据:GridView1.DataBind();1.要访问弱类型DataTable中的一个特定字段,我们需要用这样的句法:DataTable.Rows[index] ["columnName"]。

这个例子中的DataTable的弱类型性质表现在于,我们需要通过一个字符串或序号索引来访问字段名称。

而在另一个方面,一个强类型的DataTable,它的所有的字段都是通过属性的形式来实现的,访问的编码就会象这样:DataTable.Rows[index].columnName。

2.强类型的DataSet 起了强类型对象的集合的作用,它由强类型DataTable实例组成,每个强类型DataTable又进而由强类型的DataRow实例组成。

强类型的DataTable并不包括如何访问对应底层的数据表的任何信息。

要获取用来填充DataTable的数据,我们使用TableAdapter类,它提供了数据访问层的功能。

3.填充DataTable –这个做法会生成一个方法,该方法接受一个DataTable的参数,基于查询的结果填充这个DataTable。

譬如,的DataAdapter类就是在它的Fill()方法中实现这个模式的。

SpringBoot配置属性之DataSource

SpringBoot配置属性之DataSource

SpringBoot配置属性之DataSource SpringBoot配置属性系列另外附上个⼈关于springboot的⼀些⽂章另外附上个⼈关于springboot的⼀些⽂章datasourcespring.dao.exceptiontranslation.enabled是否开启PersistenceExceptionTranslationPostProcessor,默认为true spring.datasource.abandon-when-percentage-full设定超时被废弃的连接占到多少⽐例时要被关闭或上报spring.datasource.allow-pool-suspension使⽤Hikari pool时,是否允许连接池暂停,默认为: falsespring.datasource.alternate-username-allowed是否允许替代的⽤户名.spring.datasource.auto-commit指定updates是否⾃动提交.spring.datasource.catalog指定默认的catalog.mit-on-return设置当连接被归还时,是否要提交所有还未完成的事务spring.datasource.connection-init-sql指定连接被创建,再被添加到连接池之前执⾏的sql.spring.datasource.connection-init-sqls使⽤DBCP connection pool时,指定初始化时要执⾏的sqlspring.datasource.connection-properties.[key]在使⽤DBCP connection pool时指定要配置的属性spring.datasource.connection-test-query指定校验连接合法性执⾏的sql语句spring.datasource.connection-timeout指定连接的超时时间,毫秒单位.spring.datasource.continue-on-error在初始化数据库时,遇到错误是否继续,默认falsespring.datasource.data指定Data (DML)脚本spring.datasource.data-source-class-name指定数据源的全限定名.spring.datasource.data-source-jndi指定jndi的地址spring.datasource.data-source-properties.[key]使⽤Hikari connection pool时,指定要设置的属性spring.datasource.db-properties使⽤Tomcat connection pool,指定要设置的属性spring.datasource.default-auto-commit是否⾃动提交.spring.datasource.default-catalog指定连接默认的catalog.spring.datasource.default-read-only是否设置默认连接只读.spring.datasource.default-transaction-isolation指定连接的事务的默认隔离级别.spring.datasource.driver-class-name指定driver的类名,默认从jdbc url中⾃动探测.spring.datasource.fair-queue是否采⽤FIFO返回连接.spring.datasource.health-check-properties.[key]使⽤Hikari connection pool时,在⼼跳检查时传递的属性spring.datasource.idle-timeout指定连接多久没被使⽤时,被设置为空闲,默认为10msspring.datasource.ignore-exception-on-pre-load当初始化连接池时,是否忽略异常.spring.datasource.init-sql当连接创建时,执⾏的sqlspring.datasource.initial-size指定启动连接池时,初始建⽴的连接数量spring.datasource.initialization-fail-fast当创建连接池时,没法创建指定最⼩连接数量是否抛异常spring.datasource.initialize指定初始化数据源,是否⽤data.sql来初始化,默认: truespring.datasource.isolate-internal-queries指定内部查询是否要被隔离,默认为falsespring.datasource.jdbc-interceptors使⽤Tomcat connection pool时,指定jdbc拦截器,分号分隔spring.datasource.jdbc-url指定JDBC URL.spring.datasource.jmx-enabled是否开启JMX,默认为: falsespring.datasource.jndi-name指定jndi的名称.spring.datasource.leak-detection-threshold使⽤Hikari connection pool时,多少毫秒检测⼀次连接泄露. spring.datasource.log-abandoned使⽤DBCP connection pool,是否追踪废弃statement或连接,默认为: false spring.datasource.log-validation-errors当使⽤Tomcat connection pool是否打印校验错误.spring.datasource.login-timeout指定连接数据库的超时时间.spring.datasource.max-active指定连接池中最⼤的活跃连接数.spring.datasource.max-age指定连接池中连接的最⼤年龄spring.datasource.max-idle指定连接池最⼤的空闲连接数量.spring.datasource.max-lifetime指定连接池中连接的最⼤⽣存时间,毫秒单位.spring.datasource.max-open-prepared-statements指定最⼤的打开的prepared statements数量.spring.datasource.max-wait指定连接池等待连接返回的最⼤等待时间,毫秒单位.spring.datasource.maximum-pool-size指定连接池最⼤的连接数,包括使⽤中的和空闲的连接.spring.datasource.min-evictable-idle-time-millis指定⼀个空闲连接最少空闲多久后可被清除.spring.datasource.min-idle指定必须保持连接的最⼩值(For DBCP and Tomcat connection pools)spring.datasource.minimum-idle指定连接维护的最⼩空闲连接数,当使⽤HikariCP时指定.指定数据源名.spring.datasource.num-tests-per-eviction-run指定运⾏每个idle object evictor线程时的对象数量spring.datasource.password指定数据库密码.spring.datasource.platform指定schema要使⽤的Platform(schema-${platform}.sql),默认为: allspring.datasource.pool-name指定连接池名字.spring.datasource.pool-prepared-statements指定是否池化statements.spring.datasource.propagate-interrupt-state在等待连接时,如果线程被中断,是否传播中断状态.spring.datasource.read-only当使⽤Hikari connection pool时,是否标记数据源只读spring.datasource.register-mbeans指定Hikari connection pool是否注册JMX MBeans.spring.datasource.remove-abandoned指定当连接超过废弃超时时间时,是否⽴刻删除该连接.spring.datasource.remove-abandoned-timeout指定连接应该被废弃的时间.spring.datasource.rollback-on-return在归还连接时,是否回滚等待中的事务.spring.datasource.schema指定Schema (DDL)脚本.spring.datasource.separator指定初始化脚本的语句分隔符,默认: ;spring.datasource.sql-script-encoding指定SQL scripts编码.spring.datasource.suspect-timeout指定打印废弃连接前的超时时间.spring.datasource.test-on-borrow当从连接池借⽤连接时,是否测试该连接.spring.datasource.test-on-connect创建时,是否测试连接spring.datasource.test-on-return在连接归还到连接池时是否测试该连接.spring.datasource.test-while-idle当连接空闲时,是否执⾏连接测试.spring.datasource.time-between-eviction-runs-millis指定空闲连接检查、废弃连接清理、空闲连接池⼤⼩调整之间的操作时间间隔spring.datasource.transaction-isolation指定事务隔离级别,使⽤Hikari connection pool时指定spring.datasource.url指定JDBC URL.e-disposable-connection-facade是否对连接进⾏包装,防⽌连接关闭之后被使⽤.e-equals⽐较⽅法名时是否使⽤String.equals()替换==.e-lock是否对连接操作加锁ername指定数据库名.spring.datasource.validation-interval指定多少ms执⾏⼀次连接校验.spring.datasource.validation-query指定获取连接时连接校验的sql查询语句.spring.datasource.validation-query-timeout指定连接校验查询的超时时间.spring.datasource.validation-timeout设定连接校验的超时时间,当使⽤Hikari connection pool时指定spring.datasource.validator-class-name⽤来测试查询的validator全限定名.spring.datasource.xa.data-source-class-name指定数据源的全限定名.spring.datasource.xa.properties指定传递给XA data source的属性JPAspring.jpa.database指定⽬标数据库.spring.jpa.database-platform指定⽬标数据库的类型.spring.jpa.generate-ddl是否在启动时初始化schema,默认为falsespring.jpa.hibernate.ddl-auto指定DDL mode (none, validate, update, create, create-drop). 当使⽤内嵌数据库时,默认是create-drop,否则为none.spring.jpa.hibernate.naming-strategy指定命名策略.spring.jpa.open-in-view是否注册OpenEntityManagerInViewInterceptor,绑定JPA EntityManager到请求线程中,默认为: truespring.jpa.properties添加额外的属性到JPA provider.spring.jpa.show-sql是否开启sql的log,默认为: falsejooqspring.jooq.sql-dialect指定JOOQ使⽤的SQLDialect,⽐如POSTGRES.h2spring.h2.console.enabled是否开启控制台,默认为falsespring.h2.console.path指定控制台路径,默认为: /h2-consoleJTAspring.jta.allow-multiple-lrc是否允许 multiple LRC,默认为: falsespring.jta.asynchronous2-pc指定两阶段提交是否可以异步,默认为: falsespring.jta.background-recovery-interval指定多少分钟跑⼀次recovery process,默认为: 1spring.jta.background-recovery-interval-seconds指定多久跑⼀次recovery process,默认: 60spring.jta.current-node-only-recovery是否过滤掉其他⾮本JVM的recovery,默认为: truespring.jta.debug-zero-resource-transaction是否追踪没有使⽤指定资源的事务,默认为: falsespring.jta.default-transaction-timeout设定默认的事务超时时间,默认为60spring.jta.disable-jmx是否禁⽤jmx,默认为falsespring.jta.enabled是否开启JTA support,默认为: truespring.jta.exception-analyzer设置指定的异常分析类spring.jta.filter-log-status使⽤Bitronix Transaction Manager时,是否写mandatory logs,开启的话,可以节省磁盘空间,但是调试会复杂写,默认为falsespring.jta.force-batching-enabled使⽤Bitronix Transaction Manager时,是否批量写磁盘,默认为true.spring.jta.forced-write-enabled使⽤Bitronix Transaction Manager时,是否强制写⽇志到磁盘,默认为truespring.jta.graceful-shutdown-interval当使⽤Bitronix Transaction Manager,指定shutdown时等待事务结束的时间,超过则中断,默认为60spring.jta.jndi-transaction-synchronization-registry-name当使⽤Bitronix Transaction Manager时,在JNDI下得事务同步registry,默认为: java:comp/TransactionSynchronizationRegistryspring.jta.jndi-user-transaction-name指定在JNDI使⽤Bitronix Transaction Manager的名称,默认:java:comp/UserTransactionspring.jta.journal当使⽤Bitronix Transaction Manager,指定The journal是否disk还是null还是⼀个类的全限定名,默认diskspring.jta.log-dirTransaction logs directory.spring.jta.log-part1-filename指定The journal fragment⽂件1的名字,默认: btm1.tlogspring.jta.log-part2-filename指定The journal fragment⽂件2的名字,默认: btm2.tlogspring.jta.max-log-size-in-mb指定journal fragments⼤⼩的最⼤值. 默认: 2Mspring.jta.resource-configuration-filename指定Bitronix Transaction Manager配置⽂件名.spring.jta.server-id指定Bitronix Transaction Manager实例的id.spring.jta.skip-corrupted-logs是否忽略corrupted log files⽂件,默认为false.spring.jta.transaction-manager-id指定Transaction manager的唯⼀标识.spring.jta.warn-about-zero-resource-transaction当使⽤Bitronix Transaction Manager时,是否对没有使⽤指定资源的事务进⾏警告,默认为: true。

hikaridatasource参数

hikaridatasource参数

hikaridatasource参数HikariDataSource参数是指在使用HikariCP连接池时所需配置的参数。

HikariCP是一种高性能的JDBC连接池,可以帮助程序员优化应用程序的性能,减少数据库连接的开销。

HikariDataSource是HikariCP连接池的数据源,用于管理连接池。

以下是一些常用的HikariDataSource参数:1. jdbcUrl:数据库的连接字符串,如'jdbc:mysql://localhost:3306/test'。

2. username:数据库用户名。

3. password:数据库密码。

4. driverClassName:数据库驱动类名。

5. connectionTimeout:连接超时时间,默认30秒。

6. idleTimeout:连接空闲超时时间,默认10分钟。

7. maxLifetime:连接最大生命周期,默认30分钟。

8. maximumPoolSize:连接池最大连接数,默认10。

9. minimumIdle:连接池最小空闲连接数,默认10。

10. poolName:连接池名称,默认'HikariCP'。

以上这些参数可以在配置文件中进行设置,例如:```spring.datasource.hikari.jdbcUrl=jdbc:mysql://localhost:330 6/testername=rootspring.datasource.hikari.password=123456spring.datasource.hikari.driverClassName=com.mysql.cj.jdbc. Driverspring.datasource.hikari.connectionTimeout=30000spring.datasource.hikari.idleTimeout=600000spring.datasource.hikari.maxLifetime=1800000spring.datasource.hikari.maximumPoolSize=100spring.datasource.hikari.minimumIdle=10spring.datasource.hikari.poolName=myHikariCP```注意:不同的框架或使用方式可能会有一些差异,上述配置仅供参考。

六:编程设置ObjectDataSource的参数值

六:编程设置ObjectDataSource的参数值

作者:heker2007 字体:[增加减小] 类型:转载时间:2016-04-29我要评论本文主要介绍在ObjectDataSource控件的Selecting事件中,设置InputParameters参数,配合业务层的查询方法,以达到查询不同数据的目的。

导言正如我们在上一节的教程中所看到的,有很多可供选择的方式把参数的值传递到Ojbec tDataSource的方法里。

假如参数值是采用硬编码方式,来源于页面上的一个Web控件,又或者其他可被数据源Parameter对象读取的源,那么这个值可以绑定到输入参数而不需要写一行的代码。

然而有些时候,参数值来自某些在数据源的内置Parameter对象里还没有计算出来的源。

假如我们的站点支持我们的考虑那么我们也许希望参数基于当前登录用户。

又或者我们在参数传送到ObjectDataSource的隐含对象的方法前做一些客户化定制。

无论什么时候调用ObjectDataSource的Seelect方法,它都会首先触发它的Selecting事件,然后才调用ObjectDataSource的隐含对象的方法,完成后则激发ObjectDataSource ObjectDataSource的Selected 事件(图一说明这些事件的顺序)。

可以在Selecting事件的事件委托中对参数的值进行设置或更改。

图1: ObjectDataSource的Selected 和Selecting 事件分别在调用它的隐含对象的方法之前和之后触发这一节里我们将看看添加一个接受一个输入参数方法到DAL和BLL层,参数名为Mont h,int类型,方法返回一个EmployeesDataTable对象,里边包含的是雇佣周年纪念都指定月份的雇员。

我们的例子将编码设置为基于当前月份,显示一个“本月雇用周年纪念员工”列表。

让我们开始吧!第一步: 添加一个方法到EmployeesTableAdapter在我们的第一个例子里,我们需要添加一个方法来获取那些雇用日期(HireDate)在某个指定月份的员工。

cmbbox中方datasource的用法

cmbbox中方datasource的用法

cmbbox中方datasource的用法在使用C#开发Windows桌面应用程序时,我们经常需要在ComboBox控件中显示数据列表。

ComboBox控件可以通过两种方式来显示数据列表,一种是手动添加,另一种是使用DataSource属性绑定数据源。

在使用DataSource属性绑定数据源时,我们需要先创建一个数据源对象。

数据源可以是数组、集合、DataTable、DataSet等。

以DataTable为例,我们可以使用以下代码创建一个DataTable对象:DataTable dt = new DataTable();dt.Columns.Add('ID', typeof(int));dt.Columns.Add('Name', typeof(string));dt.Rows.Add(1, '张三');dt.Rows.Add(2, '李四');dt.Rows.Add(3, '王五');然后,我们可以将这个DataTable对象设置为ComboBox的DataSource属性:comboBox1.DataSource = dt;接着,我们需要指定ComboBox控件显示哪个字段。

比如,我们可以让ComboBox显示DataTable中的Name字段:comboBox1.DisplayMember = 'Name';最后,我们还需要指定ComboBox控件选中项的值是哪个字段。

比如,我们可以让ComboBox选中项的值为DataTable中的ID字段:comboBox1.ValueMember = 'ID';这样,ComboBox控件就可以显示DataTable中的数据了。

当用户选择某个选项时,ComboBox控件会返回该选项的ID值。

除了DataTable,我们还可以使用其他类型的数据源对象。

cmbbox中方datasource的用法

cmbbox中方datasource的用法

cmbbox中方datasource的用法在C#中,ComboBox控件是用来展示列表内容的控件之一。

它可以在下拉框中展示多个选项供用户选择。

在使用ComboBox控件时,我们经常会用到DataSource属性,这个属性可以让我们方便的绑定数据源。

DataSource属性是ComboBox控件中最常用的属性之一,它用于绑定数据源。

数据源可以是一个数据表、一个数据集、一个ArrayList 甚至是一个简单的数组。

我们可以通过DataSource属性将ComboBox 与数据源进行绑定,ComboBox就会自动显示数据源中的数据。

使用DataSource属性时,我们需要注意以下几点:1. 数据源必须是可枚举的。

2. 数据源必须实现IEnumerable接口。

3. 数据源必须是可序列化的。

4. 数据源必须包含一个可以用来展示的属性。

如果我们想向ComboBox中添加自定义的数据源,我们可以通过继承BindingList<T>类来实现。

BindingList<T>是一个泛型类,我们可以通过指定类型来创建自己的数据源。

使用ComboBox控件时,我们还可以通过绑定SelectedValue属性来获取用户选择的值。

SelectedValue属性会返回ComboBox中选项的值,而不是文本。

如果我们想获取用户选择的文本,可以使用SelectedText属性。

总之,使用ComboBox控件中的DataSource属性,我们可以很方便地绑定数据源来展示选项,并且通过SelectedValue和SelectedText属性来获取用户选择的值和文本。

basicdatasourcefactory 参数

basicdatasourcefactory 参数

basicdatasourcefactory 参数BasicDataSourceFactory 是一个用于创建BasicDataSource 类实例的工厂类。

它提供了以下参数:- driverClassName:JDBC 驱动程序的完全限定类名。

- url:JDBC URL。

- username:数据库登录用户名。

- password:数据库登录密码。

- defaultAutoCommit:默认情况下是否自动提交事务。

- defaultReadOnly:默认情况下连接是否为只读。

- defaultTransactionIsolation:默认情况下事务的隔离级别。

- maxTotal:连接池最大连接数。

- maxIdle:连接池最大空闲连接数。

- minIdle:连接池最小空闲连接数。

- initialSize:初始化连接池时创建的连接数。

- maxWaitMillis:获取连接的最大等待时间(单位为毫秒)。

- validationQuery:用于测试连接是否可用的SQL 查询语句。

- testOnBorrow:在从池中获取连接时是否测试连接。

- testWhileIdle:在空闲时是否测试连接。

- timeBetweenEvictionRunsMillis:池中连接空闲时间的最小值(单位为毫秒)。

在此时间间隔内,连接池会检查并驱逐已空闲时间超过此值的连接。

- numTestsPerEvictionRun:每次检查中检查的连接数。

- minEvictableIdleTimeMillis:连接在池中最小空闲时间(单位为毫秒)。

连接池会在此时间间隔后驱逐此连接。

- testOnReturn:连接返回池时是否测试连接。

- jdbcInterceptors:要应用于所有池中连接的拦截器。

dynamicdatasource的connecttimeout参数

dynamicdatasource的connecttimeout参数

dynamicdatasource的connecttimeout参数一、动态数据源概述动态数据源是一种能够根据业务需求动态调整数据来源的数据库技术。

在现代软件开发中,动态数据源的应用越来越广泛,为开发人员提供了极大的便利。

connecttimeout参数是动态数据源的一个重要配置项,它决定了数据源连接的超时时间。

二、connecttimeout参数介绍1.作用与意义connecttimeout参数主要用于设置数据源连接的超时时间,一旦连接超时,系统会自动断开连接。

这个参数在实际应用中具有重要意义,因为它可以确保数据源在连接失败时能够及时进行重试,提高系统的稳定性和可用性。

2.配置方法connecttimeout参数的配置方法如下:```dynamicdatasource.connecttimeout = xx;```其中,xx表示超时时间,单位为毫秒。

开发者可以根据实际需求调整这个值,使其满足业务场景的要求。

3.常见问题与解决方案- 问题一:连接超时导致的系统崩溃。

解决方案:检查数据源连接参数,如IP地址、端口号、用户名、密码等,确保配置正确;调整connecttimeout值,使其在合理范围内;优化数据源连接逻辑,减少不必要的连接重试。

- 问题二:连接超时影响系统性能。

解决方案:提高数据源的处理能力,如增加硬件资源、优化数据库查询语句等;调整connecttimeout值,使其在合理范围内;分析系统瓶颈,针对性地进行优化。

三、总结与建议connecttimeout参数对于动态数据源的稳定性和性能具有重要作用。

开发者应充分了解其意义和配置方法,并根据实际需求进行合理调整。

同时,要关注连接超时问题,及时分析原因并采取相应措施,以确保数据源的高效运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编程设置ObjectDataSource的参数值
导言
正如我们在上一节的教程中所看到的,有很多可供选择的方式把参数的值传递到OjbectDataSource的方法里。

假如参数值是采用硬编码方式,来源于页面上的一个Web 控件,又或者其他可被数据源Parameter对象读取的源,那么这个值可以绑定到输入参数而不需要写一行的代码。

然而有些时候,参数值来自某些在数据源的内置Parameter对象里还没有计算出来的源。

假如我们的站点支持我们的考虑那么我们也许希望参数基于当前登录用户。

又或者我们在参数传送到ObjectDataSource的隐含对象的方法前做一些客户化定制。

无论什么时候调用ObjectDataSource的Seelect方法,它都会首先触发它的Selecting 事件,然后才调用ObjectDataSource的隐含对象的方法,完成后则激发ObjectDataSource ObjectDataSource的Selected事件(图一说明这些事件的顺序)。

可以在Selecting事件的事件委托中对参数的值进行设置或更改。

图1: ObjectDataSource的Selected 和Selecting 事件分别在调用它的隐
含对象的方法之前和之后触发
这一节里我们将看看添加一个接受一个输入参数方法到DAL和BLL层,参数名为Month,int类型,方法返回一个EmployeesDataTable对象,里边包含的是雇佣周年纪念都指定月份的雇员。

我们的例子将编码设置为基于当前月份,显示一个“本月雇用周年纪念员工”列表。

让我们开始吧!
第一步: 添加一个方法到EmployeesTableAdapter
在我们的第一个例子里,我们需要添加一个方法来获取那些雇用日期(HireDate)在某个指定月份的员工。

在我们的程序架构下为了提供这个功能,我们首先需要在通过特定SQL 语句映射出来的EmployeesTableAdapter中创建一个方法。

为了实现这一点,首先打开Northwind类型化数据集,在EmployeesTableAdapter标签上右键选择“添加查询”。

图2: 在EmployeesTableAdapter里添加一个查询
选择返回一个或多个行和列的SQL语句。

当到达指定SELECT语句窗口时,EmployeesTableAdapter已经装载了默认的SELECT语句。

简单地,添加一个WHERE 子句:WHERE DATEPART(m, HireDate) = @Month 。

其中DATEPART是T-SQL里的一个函数,用作返回日期类型的一部分;在这里,我们使用DATEPART函数返回雇用日期(HireDate)列的月份部分。

图3: 仅返回HireDate 列的值小于等于参数@HiredBeforeDate的行
最后,分别把默认的方法名FillBy和GetDataBy更改为FillByHiredDateMonth和GetEmployeesByHiredDateMonth 。

图4: 选择比FillBy和GetDataBy更恰当的方法名称
点击“完成”结束向导并返回到数据集的设计界面。

这时候EmployeesTableAdapter会包含一套新的方法来获取指定月份雇用的员工。

图5: 新的方法出现在数据集的设计界面
第二步: 在业务逻辑层添加方法GetEmployeesByHiredDateMonth(month)
因为我们的程序架构使用了单独的一层来处理业务逻辑和数据逻辑,我们需要在BLL里增加一个方法,该方法调用DAL的方法获取指定月份里雇用的员工。

打开文件EmployeesBLL.cs并添加下面这个方法:
[ponentModel.DataObjectMethodAttribute(ponentMo del.DataObjectMethodType.Select, false)]
public Northwind.EmployeesDataTable GetEmployeesByHiredDateMonth(int month)
{
return Adapter.GetEmployeesByHiredDateMonth(month);
}
和此类里的其他方法一样,GetEmployeesByHiredDateMonth(month)仅仅是简单地调用DAL并返回结果。

第三步: 显示雇用周年纪念日在本月份的员工
最后一部我们举例说明如何显示雇用周年纪念在本月份的员工。

首先,添加一个GridView 控件到页面ProgrammaticParams.aspx,该页面在文件夹BasicReporting里。

添加一个新的ObjectDataSource控件作为它的数据源。

配置ObjectDataSource使用类EmployeesBLL并指定SelectMethod属性为GetEmployeesByHiredDateMonth(month)。

图6: 使用EmployeesBLL 类
图7: 选择GetEmployeesByHiredDateMonth(month)方法
最后一屏要求我们给month参数提供参数源。

既然我们将编码设置这个值,就让参数源维持它的默认选项None,点击“完成”。

图8: 让参数源设置为None
这将在ObjectDataSource的SelectParameters集合里创建一个未指定参数值的Parameter对象。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetEmployeesByHiredDateMonth"
TypeName="EmployeesBLL">
<SelectParameters>
<asp:Parameter Name="month" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
要编码设置这个参数值,我们需要给ObjectDataSource的Selecting事件添加一个事件委托。

为了实现这一点,到设计视图里在ObjectDataSource上双击。

另一种方式是选中ObjectDataSource在属性窗口里点击黄色闪电小图标,然后,直接在Selecting这一栏里双击或者输入一个你要使用的事件委托的名称。

图9:点击属性窗口里的闪电图标列出Web控件的所有事件
两种途径都可以在页面的代码隐藏类里增加一个对ObjectDataSource的Selecting事件的事件委托。

在这个事件委托里,我们可以通过使用
e.InputParameters[parameterName]读取参数的值,其中parameterName的值是<asp:Parameter>标签里的属性Name的值(InputParameters也可以按照索引访问,用e.InputParameters[index])。

为了把month参数设置为当前月份,需要在Selecting 事件委托里加入如下代码:
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["month"] = DateTime.Now.Month;
}
当通过浏览器访问该页面,我们可以看到只有一个员工是在当前月份(三月)雇用的:Laura Callahan,他从1994年3月开始雇用。

图10: 雇用周年纪念日在本月份的员工被显示出来了
总结
虽然可以用特定的方式声明ObjectDataSource的参数值而不需要写代码,编程设置参数值同样很容易。

我们需要做的仅仅是给ObjectDataSource的Selecting事件增加一个事件委托,它在调用隐含对象的方式前触发,并且通过InputParameters集合手工设置一个或多个参数值。

本节结束基本这一章。

下一节我们开始主从数据一章,这一章里我们将着眼于允许访问者筛选数据和主从数据处理的技巧。

祝编程快乐!
作者简介
Scott Mitchell,著有六本ASP/方面的书,是的创始人,自1998年以来一直应用微软Web技术。

Scott是个独立的技术咨询顾问,培训师,作家,最近完成了将由Sams出版社出版的新作,24小时内精通 2.0。

他的联系电邮为mitchell@,也可以通过他的博客
与他联系。

相关文档
最新文档