<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>flyinweb 's BLOG</title>
<link>http://www.517sou.net</link>
<Description>flyinweb 's BLOG</Description>
<language>zh-cn</language>
<copyright>Copyright 2003-2005 flyinweb</copyright>
<webMaster>shanyiwan@hotmail.com</webMaster>
<image>
	<title>flyinweb 's BLOG</title> 
	<url>http://www.517sou.net/images/logos.gif</url> 
	<link>http://www.517sou.net</link> 
	<description>flyinweb 's BLOG</description> 
</image>
<item><link>http://www.517sou.net/blogview.asp?logID=1462</link><title>PHP configure --help</title><author>flyinweb</author><category>技术文摘</category><pubDate>2009-1-6 11:20:42</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1462</guid><description><![CDATA[Usage:&nbsp;configure&nbsp;[options]&nbsp;[host]<br>Options:&nbsp;[defaults&nbsp;in&nbsp;brackets&nbsp;after&nbsp;descriptions]<br>Configuration:<br>&nbsp;&nbsp;--cache-file=FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache&nbsp;test&nbsp;results&nbsp;in&nbsp;FILE<br>&nbsp;&nbsp;--help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;this&nbsp;message<br>&nbsp;&nbsp;--no-create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;create&nbsp;output&nbsp;files<br>&nbsp;&nbsp;--quiet,&nbsp;--silent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;print&nbsp;`checking...&#39;&nbsp;messages<br>&nbsp;&nbsp;--version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;the&nbsp;version&nbsp;of&nbsp;autoconf&nbsp;that&nbsp;created&nbsp;configure<br>Directory&nbsp;and&nbsp;file&nbsp;names:<br>&nbsp;&nbsp;--prefix=PREFIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;architecture-independent&nbsp;files&nbsp;in&nbsp;PREFIX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[/usr/local]<br>&nbsp;&nbsp;--exec-prefix=EPREFIX&nbsp;&nbsp;&nbsp;install&nbsp;architecture-dependent&nbsp;files&nbsp;in&nbsp;EPREFIX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[same&nbsp;as&nbsp;prefix]<br>&nbsp;&nbsp;--bindir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;executables&nbsp;in&nbsp;DIR&nbsp;[EPREFIX/bin]<br>&nbsp;&nbsp;--sbindir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;admin&nbsp;executables&nbsp;in&nbsp;DIR&nbsp;[EPREFIX/sbin]<br>&nbsp;&nbsp;--libexecdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;program&nbsp;executables&nbsp;in&nbsp;DIR&nbsp;[EPREFIX/libexec]<br>&nbsp;&nbsp;--datadir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read-only&nbsp;architecture-independent&nbsp;data&nbsp;in&nbsp;DIR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[PREFIX/share]<br>&nbsp;&nbsp;--sysconfdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read-only&nbsp;single-machine&nbsp;data&nbsp;in&nbsp;DIR&nbsp;[PREFIX/etc]<br>&nbsp;&nbsp;--sharedstatedir=DIR&nbsp;&nbsp;&nbsp;&nbsp;modifiable&nbsp;architecture-independent&nbsp;data&nbsp;in&nbsp;DIR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[PREFIX/com]<br>&nbsp;&nbsp;--localstatedir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modifiable&nbsp;single-machine&nbsp;data&nbsp;in&nbsp;DIR&nbsp;[PREFIX/var]<br>&nbsp;&nbsp;--libdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object&nbsp;code&nbsp;libraries&nbsp;in&nbsp;DIR&nbsp;[EPREFIX/lib]<br>&nbsp;&nbsp;--includedir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;header&nbsp;files&nbsp;in&nbsp;DIR&nbsp;[PREFIX/include]<br>&nbsp;&nbsp;--oldincludedir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;header&nbsp;files&nbsp;for&nbsp;non-gcc&nbsp;in&nbsp;DIR&nbsp;[/usr/include]<br>&nbsp;&nbsp;--infodir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;documentation&nbsp;in&nbsp;DIR&nbsp;[PREFIX/info]<br>&nbsp;&nbsp;--mandir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;man&nbsp;documentation&nbsp;in&nbsp;DIR&nbsp;[PREFIX/man]<br>&nbsp;&nbsp;--srcdir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find&nbsp;the&nbsp;sources&nbsp;in&nbsp;DIR&nbsp;[configure&nbsp;dir&nbsp;or&nbsp;..]<br>&nbsp;&nbsp;--program-prefix=PREFIX&nbsp;prepend&nbsp;PREFIX&nbsp;to&nbsp;installed&nbsp;program&nbsp;names<br>&nbsp;&nbsp;--program-suffix=SUFFIX&nbsp;append&nbsp;SUFFIX&nbsp;to&nbsp;installed&nbsp;program&nbsp;names<br>&nbsp;&nbsp;--program-transform-name=PROGRAM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run&nbsp;sed&nbsp;PROGRAM&nbsp;on&nbsp;installed&nbsp;program&nbsp;names<br>Host&nbsp;type:<br>&nbsp;&nbsp;--build=BUILD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure&nbsp;for&nbsp;building&nbsp;on&nbsp;BUILD&nbsp;[BUILD=HOST]<br>&nbsp;&nbsp;--host=HOST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure&nbsp;for&nbsp;HOST&nbsp;[guessed]<br>&nbsp;&nbsp;--target=TARGET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;configure&nbsp;for&nbsp;TARGET&nbsp;[TARGET=HOST]<br>Features&nbsp;and&nbsp;packages:<br>&nbsp;&nbsp;--disable-FEATURE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;include&nbsp;FEATURE&nbsp;(same&nbsp;as&nbsp;--enable-FEATURE=no)<br>&nbsp;&nbsp;--enable-FEATURE[=ARG]&nbsp;&nbsp;include&nbsp;FEATURE&nbsp;[ARG=yes]<br>&nbsp;&nbsp;--with-PACKAGE[=ARG]&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;PACKAGE&nbsp;[ARG=yes]<br>&nbsp;&nbsp;--without-PACKAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;not&nbsp;use&nbsp;PACKAGE&nbsp;(same&nbsp;as&nbsp;--with-PACKAGE=no)<br>&nbsp;&nbsp;--x-includes=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;include&nbsp;files&nbsp;are&nbsp;in&nbsp;DIR<br>&nbsp;&nbsp;--x-libraries=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;X&nbsp;library&nbsp;files&nbsp;are&nbsp;in&nbsp;DIR<br>--enable&nbsp;and&nbsp;--with&nbsp;options&nbsp;recognized:<br>&nbsp;&nbsp;--with-libdir=NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Look&nbsp;for&nbsp;libraries&nbsp;in&nbsp;.../NAME&nbsp;rather&nbsp;than&nbsp;.../lib<br>&nbsp;&nbsp;--disable-rpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;passing&nbsp;additional&nbsp;runtime&nbsp;library<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;search&nbsp;paths<br><br>SAPI&nbsp;modules:<br><br>&nbsp;&nbsp;--with-aolserver=DIR&nbsp;&nbsp;&nbsp;&nbsp;Specify&nbsp;path&nbsp;to&nbsp;the&nbsp;installed&nbsp;AOLserver<br>&nbsp;&nbsp;--with-apxs[=FILE]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;shared&nbsp;Apache&nbsp;1.x&nbsp;module.&nbsp;FILE&nbsp;is&nbsp;the&nbsp;optional<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathname&nbsp;to&nbsp;the&nbsp;Apache&nbsp;apxs&nbsp;tool&nbsp;[apxs]<br>&nbsp;&nbsp;--with-apache[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;Apache&nbsp;1.x&nbsp;module.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;top-level&nbsp;Apache<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build&nbsp;directory&nbsp;[/usr/local/apache]<br>&nbsp;&nbsp;--enable-mod-charset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APACHE:&nbsp;Enable&nbsp;transfer&nbsp;tables&nbsp;for&nbsp;mod_charset&nbsp;(Rus&nbsp;Apache)<br>&nbsp;&nbsp;--with-apxs2filter[=FILE]&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPERIMENTAL:&nbsp;Build&nbsp;shared&nbsp;Apache&nbsp;2.0&nbsp;Filter&nbsp;module.&nbsp;FILE&nbsp;is&nbsp;the&nbsp;optional<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathname&nbsp;to&nbsp;the&nbsp;Apache&nbsp;apxs&nbsp;tool&nbsp;[apxs]<br>&nbsp;&nbsp;--with-apxs2[=FILE]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;shared&nbsp;Apache&nbsp;2.0&nbsp;Handler&nbsp;module.&nbsp;FILE&nbsp;is&nbsp;the&nbsp;optional<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathname&nbsp;to&nbsp;the&nbsp;Apache&nbsp;apxs&nbsp;tool&nbsp;[apxs]<br>&nbsp;&nbsp;--with-apache-hooks[=FILE]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPERIMENTAL:&nbsp;Build&nbsp;shared&nbsp;Apache&nbsp;1.x&nbsp;module.&nbsp;FILE&nbsp;is&nbsp;the&nbsp;optional<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pathname&nbsp;to&nbsp;the&nbsp;Apache&nbsp;apxs&nbsp;tool&nbsp;[apxs]<br>&nbsp;&nbsp;--with-apache-hooks-static[=DIR]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXPERIMENTAL:&nbsp;Build&nbsp;Apache&nbsp;1.x&nbsp;module.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;top-level&nbsp;Apache<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build&nbsp;directory&nbsp;[/usr/local/apache]<br>&nbsp;&nbsp;--enable-mod-charset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APACHE&nbsp;(hooks):&nbsp;Enable&nbsp;transfer&nbsp;tables&nbsp;for&nbsp;mod_charset&nbsp;(Rus&nbsp;Apache)<br>&nbsp;&nbsp;--with-caudium[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;a&nbsp;Pike&nbsp;module&nbsp;for&nbsp;use&nbsp;with&nbsp;Caudium.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;Caudium&nbsp;server&nbsp;dir&nbsp;[/usr/local/caudium/server]<br>&nbsp;&nbsp;--disable-cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;building&nbsp;CLI&nbsp;version&nbsp;of&nbsp;PHP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(this&nbsp;forces&nbsp;--without-pear)<br>&nbsp;&nbsp;--with-continuity=DIR&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;Continuity&nbsp;Server&nbsp;module.&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DIR&nbsp;is&nbsp;path&nbsp;to&nbsp;the&nbsp;installed&nbsp;Continuity&nbsp;Server&nbsp;root<br>&nbsp;&nbsp;--enable-embed[=TYPE]&nbsp;&nbsp;&nbsp;EXPERIMENTAL:&nbsp;Enable&nbsp;building&nbsp;of&nbsp;embedded&nbsp;SAPI&nbsp;library<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;is&nbsp;either&nbsp;&#39;shared&#39;&nbsp;or&nbsp;&#39;static&#39;.&nbsp;[TYPE=shared]<br>&nbsp;&nbsp;--with-isapi[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;an&nbsp;ISAPI&nbsp;module&nbsp;for&nbsp;use&nbsp;with&nbsp;Zeus<br>&nbsp;&nbsp;--with-milter[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;Milter&nbsp;application<br>&nbsp;&nbsp;--with-nsapi=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;NSAPI&nbsp;module&nbsp;for&nbsp;Netscape/iPlanet/Sun&nbsp;Webserver<br>&nbsp;&nbsp;--with-phttpd=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;phttpd&nbsp;module<br>&nbsp;&nbsp;--with-pi3web[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;Pi3Web&nbsp;module<br>&nbsp;&nbsp;--with-roxen=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;a&nbsp;Pike&nbsp;module.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;base&nbsp;Roxen<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory,&nbsp;normally&nbsp;/usr/local/roxen/server<br>&nbsp;&nbsp;--enable-roxen-zts&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROXEN:&nbsp;Build&nbsp;the&nbsp;Roxen&nbsp;module&nbsp;using&nbsp;Zend&nbsp;Thread&nbsp;Safety<br>&nbsp;&nbsp;--with-thttpd=SRCDIR&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;thttpd&nbsp;module<br>&nbsp;&nbsp;--with-tux=MODULEDIR&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;a&nbsp;TUX&nbsp;module&nbsp;(Linux&nbsp;only)<br>&nbsp;&nbsp;--with-webjames=SRCDIR&nbsp;&nbsp;Build&nbsp;PHP&nbsp;as&nbsp;a&nbsp;WebJames&nbsp;module&nbsp;(RISC&nbsp;OS&nbsp;only)<br>&nbsp;&nbsp;--disable-cgi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;building&nbsp;CGI&nbsp;version&nbsp;of&nbsp;PHP<br>&nbsp;&nbsp;--enable-fastcgi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGI:&nbsp;Enable&nbsp;FastCGI&nbsp;support&nbsp;in&nbsp;the&nbsp;CGI&nbsp;binary<br>&nbsp;&nbsp;--enable-force-cgi-redirect<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGI:&nbsp;Enable&nbsp;security&nbsp;check&nbsp;for&nbsp;internal&nbsp;server<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirects.&nbsp;Use&nbsp;this&nbsp;if&nbsp;you&nbsp;run&nbsp;the&nbsp;PHP&nbsp;CGI&nbsp;with&nbsp;Apache<br>&nbsp;&nbsp;--enable-discard-path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CGI:&nbsp;When&nbsp;this&nbsp;is&nbsp;enabled&nbsp;the&nbsp;PHP&nbsp;CGI&nbsp;binary&nbsp;can&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;safely&nbsp;be&nbsp;placed&nbsp;outside&nbsp;of&nbsp;the&nbsp;web&nbsp;tree&nbsp;and&nbsp;people<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;not&nbsp;be&nbsp;able&nbsp;to&nbsp;circumvent&nbsp;.htaccess&nbsp;security<br>&nbsp;&nbsp;--disable-path-info-check&nbsp;CGI:&nbsp;If&nbsp;this&nbsp;is&nbsp;disabled,&nbsp;paths&nbsp;such&nbsp;as<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/info.php/test?a=b&nbsp;will&nbsp;fail&nbsp;to&nbsp;work<br><br>General&nbsp;settings:<br><br>&nbsp;&nbsp;--enable-gcov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;GCOV&nbsp;code&nbsp;coverage&nbsp;(requires&nbsp;LTP)&nbsp;-&nbsp;FOR&nbsp;DEVELOPERS&nbsp;ONLY!!<br>&nbsp;&nbsp;--enable-debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Compile&nbsp;with&nbsp;debugging&nbsp;symbols<br>&nbsp;&nbsp;--with-layout=TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;how&nbsp;installed&nbsp;files&nbsp;will&nbsp;be&nbsp;laid&nbsp;out.&nbsp;&nbsp;Type&nbsp;can<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;either&nbsp;PHP&nbsp;or&nbsp;GNU&nbsp;[PHP]<br>&nbsp;&nbsp;--with-config-file-path=PATH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;the&nbsp;path&nbsp;in&nbsp;which&nbsp;to&nbsp;look&nbsp;for&nbsp;php.ini&nbsp;[PREFIX/lib]<br>&nbsp;&nbsp;--with-config-file-scan-dir=PATH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;the&nbsp;path&nbsp;where&nbsp;to&nbsp;scan&nbsp;for&nbsp;configuration&nbsp;files<br>&nbsp;&nbsp;--enable-safe-mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;safe&nbsp;mode&nbsp;by&nbsp;default<br>&nbsp;&nbsp;--with-exec-dir[=DIR]&nbsp;&nbsp;&nbsp;Only&nbsp;allow&nbsp;executables&nbsp;in&nbsp;DIR&nbsp;under&nbsp;safe-mode<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[/usr/local/php/bin]<br>&nbsp;&nbsp;--enable-sigchild&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;PHP&#39;s&nbsp;own&nbsp;SIGCHLD&nbsp;handler<br>&nbsp;&nbsp;--enable-magic-quotes&nbsp;&nbsp;&nbsp;Enable&nbsp;magic&nbsp;quotes&nbsp;by&nbsp;default.<br>&nbsp;&nbsp;--enable-libgcc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;explicitly&nbsp;linking&nbsp;against&nbsp;libgcc<br>&nbsp;&nbsp;--disable-short-tags&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;the&nbsp;short-form&nbsp;&lt;?&nbsp;start&nbsp;tag&nbsp;by&nbsp;default<br>&nbsp;&nbsp;--enable-dmalloc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;dmalloc<br>&nbsp;&nbsp;--disable-ipv6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;IPv6&nbsp;support<br>&nbsp;&nbsp;--enable-fd-setsize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;size&nbsp;of&nbsp;descriptor&nbsp;sets<br><br>Extensions:<br><br>&nbsp;&nbsp;--with-EXTENSION=[shared[,PATH]]<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;NOTE:&nbsp;Not&nbsp;all&nbsp;extensions&nbsp;can&nbsp;be&nbsp;build&nbsp;as&nbsp;&#39;shared&#39;.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;--with-foobar=shared,/usr/local/foobar/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;Builds&nbsp;the&nbsp;foobar&nbsp;extension&nbsp;as&nbsp;shared&nbsp;extension.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;foobar&nbsp;package&nbsp;install&nbsp;prefix&nbsp;is&nbsp;/usr/local/foobar/<br><br><br>&nbsp;--disable-all&nbsp;&nbsp;&nbsp;Disable&nbsp;all&nbsp;extensions&nbsp;which&nbsp;are&nbsp;enabled&nbsp;by&nbsp;default<br><br>&nbsp;&nbsp;--disable-libxml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;LIBXML&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir[=DIR]&nbsp;&nbsp;&nbsp;LIBXML:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-openssl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;OpenSSL&nbsp;support&nbsp;(requires&nbsp;OpenSSL&nbsp;&gt;=&nbsp;0.9.6)<br>&nbsp;&nbsp;--with-kerberos[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OPENSSL:&nbsp;Include&nbsp;Kerberos&nbsp;support<br>&nbsp;&nbsp;--with-pcre-regex=DIR&nbsp;&nbsp;&nbsp;Include&nbsp;Perl&nbsp;Compatible&nbsp;Regular&nbsp;Expressions&nbsp;support.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;PCRE&nbsp;install&nbsp;prefix&nbsp;[BUNDLED]<br>&nbsp;&nbsp;--with-zlib[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;ZLIB&nbsp;support&nbsp;(requires&nbsp;zlib&nbsp;&gt;=&nbsp;1.0.9)<br>&nbsp;&nbsp;--with-zlib-dir=&lt;DIR&gt;&nbsp;&nbsp;&nbsp;Define&nbsp;the&nbsp;location&nbsp;of&nbsp;zlib&nbsp;install&nbsp;directory<br>&nbsp;&nbsp;--enable-bcmath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;bc&nbsp;style&nbsp;precision&nbsp;math&nbsp;functions<br>&nbsp;&nbsp;--with-bz2[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;BZip2&nbsp;support<br>&nbsp;&nbsp;--enable-calendar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;support&nbsp;for&nbsp;calendar&nbsp;conversion<br>&nbsp;&nbsp;--disable-ctype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;ctype&nbsp;functions<br>&nbsp;&nbsp;--with-curl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;cURL&nbsp;support<br>&nbsp;&nbsp;--with-curlwrappers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;cURL&nbsp;for&nbsp;url&nbsp;streams<br>&nbsp;&nbsp;--enable-dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;DBA&nbsp;with&nbsp;bundled&nbsp;modules.&nbsp;To&nbsp;build&nbsp;shared&nbsp;DBA<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extension&nbsp;use&nbsp;--enable-dba=shared<br>&nbsp;&nbsp;--with-qdbm[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;QDBM&nbsp;support<br>&nbsp;&nbsp;--with-gdbm[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;GDBM&nbsp;support<br>&nbsp;&nbsp;--with-ndbm[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;NDBM&nbsp;support<br>&nbsp;&nbsp;--with-db4[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;Berkeley&nbsp;DB4&nbsp;support<br>&nbsp;&nbsp;--with-db3[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;Berkeley&nbsp;DB3&nbsp;support<br>&nbsp;&nbsp;--with-db2[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;Berkeley&nbsp;DB2&nbsp;support<br>&nbsp;&nbsp;--with-db1[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;Berkeley&nbsp;DB1&nbsp;support/emulation<br>&nbsp;&nbsp;--with-dbm[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;DBM&nbsp;support<br>&nbsp;&nbsp;--without-cdb[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;CDB&nbsp;support&nbsp;(bundled)<br>&nbsp;&nbsp;--disable-inifile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;INI&nbsp;support&nbsp;(bundled)<br>&nbsp;&nbsp;--disable-flatfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBA:&nbsp;FlatFile&nbsp;support&nbsp;(bundled)<br>&nbsp;&nbsp;--enable-dbase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;the&nbsp;bundled&nbsp;dbase&nbsp;library<br>&nbsp;&nbsp;--disable-dom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;DOM&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir[=DIR]&nbsp;&nbsp;&nbsp;DOM:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--enable-exif&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;EXIF&nbsp;(metadata&nbsp;from&nbsp;images)&nbsp;support<br>&nbsp;&nbsp;--with-fbsql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;FrontBase&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;FrontBase&nbsp;base&nbsp;directory<br>&nbsp;&nbsp;--with-fdftk[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;FDF&nbsp;support<br>&nbsp;&nbsp;--disable-filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;input&nbsp;filter&nbsp;support<br>&nbsp;&nbsp;--with-pcre-dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILTER:&nbsp;pcre&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--enable-ftp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;FTP&nbsp;support<br>&nbsp;&nbsp;--with-openssl-dir[=DIR]&nbsp;&nbsp;FTP:&nbsp;openssl&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-gd[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;GD&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;GD&nbsp;library&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[BUNDLED]<br>&nbsp;&nbsp;--with-jpeg-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libjpeg&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-png-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libpng&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-zlib-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libz&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-xpm-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libXpm&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-ttf[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Include&nbsp;FreeType&nbsp;1.x&nbsp;support<br>&nbsp;&nbsp;--with-freetype-dir[=DIR]&nbsp;GD:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;FreeType&nbsp;2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-t1lib[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Include&nbsp;T1lib&nbsp;support.&nbsp;T1lib&nbsp;version&nbsp;&gt;=&nbsp;5.0.0&nbsp;required<br>&nbsp;&nbsp;--enable-gd-native-ttf&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Enable&nbsp;TrueType&nbsp;string&nbsp;function<br>&nbsp;&nbsp;--enable-gd-jis-conv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GD:&nbsp;Enable&nbsp;JIS-mapped&nbsp;Japanese&nbsp;font&nbsp;support<br>&nbsp;&nbsp;--with-gettext[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;GNU&nbsp;gettext&nbsp;support<br>&nbsp;&nbsp;--with-gmp[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;GNU&nbsp;MP&nbsp;support<br>&nbsp;&nbsp;--disable-hash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;hash&nbsp;support<br>&nbsp;&nbsp;--without-iconv[=DIR]&nbsp;&nbsp;&nbsp;Exclude&nbsp;iconv&nbsp;support<br>&nbsp;&nbsp;--with-imap[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;IMAP&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;c-client&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-kerberos[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMAP:&nbsp;Include&nbsp;Kerberos&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;Kerberos&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-imap-ssl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMAP:&nbsp;Include&nbsp;SSL&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;OpenSSL&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-interbase[=DIR]&nbsp;&nbsp;Include&nbsp;InterBase&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;InterBase&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[/usr/interbase]<br>&nbsp;&nbsp;--disable-json&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;JavaScript&nbsp;Object&nbsp;Serialization&nbsp;support<br>&nbsp;&nbsp;--with-ldap[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;LDAP&nbsp;support<br>&nbsp;&nbsp;--with-ldap-sasl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;LDAP:&nbsp;Include&nbsp;Cyrus&nbsp;SASL&nbsp;support<br>&nbsp;&nbsp;--enable-mbstring&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;multibyte&nbsp;string&nbsp;support<br>&nbsp;&nbsp;--disable-mbregex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MBSTRING:&nbsp;Disable&nbsp;multibyte&nbsp;regex&nbsp;support<br>&nbsp;&nbsp;--disable-mbregex-backtrack<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MBSTRING:&nbsp;Disable&nbsp;multibyte&nbsp;regex&nbsp;backtrack&nbsp;check<br>&nbsp;&nbsp;--with-libmbfl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MBSTRING:&nbsp;Use&nbsp;external&nbsp;libmbfl.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;libmbfl&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[BUNDLED]<br>&nbsp;&nbsp;--with-mcrypt[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;mcrypt&nbsp;support<br>&nbsp;&nbsp;--with-mhash[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;mhash&nbsp;support<br>&nbsp;&nbsp;--with-mime-magic[=FILE]&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;mime_magic&nbsp;support&nbsp;(DEPRECATED!!)<br>&nbsp;&nbsp;--with-ming[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;MING&nbsp;support<br>&nbsp;&nbsp;--with-msql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;mSQL&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;mSQL&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[/usr/local/Hughes]<br>&nbsp;&nbsp;--with-mssql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;MSSQL-DB&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;FreeTDS&nbsp;home<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;[/usr/local/freetds]<br>&nbsp;&nbsp;--with-mysql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;MySQL&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;MySQL&nbsp;base&nbsp;directory<br>&nbsp;&nbsp;--with-mysql-sock[=DIR]&nbsp;&nbsp;&nbsp;MySQL:&nbsp;Location&nbsp;of&nbsp;the&nbsp;MySQL&nbsp;unix&nbsp;socket&nbsp;pointer.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;unspecified,&nbsp;the&nbsp;default&nbsp;locations&nbsp;are&nbsp;searched<br>&nbsp;&nbsp;--with-zlib-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libz&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-mysqli[=FILE]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;MySQLi&nbsp;support.&nbsp;&nbsp;FILE&nbsp;is&nbsp;the&nbsp;optional&nbsp;pathname&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;mysql_config&nbsp;[mysql_config]<br>&nbsp;&nbsp;--enable-embedded-mysqli&nbsp;&nbsp;MYSQLi:&nbsp;Enable&nbsp;embedded&nbsp;support<br>&nbsp;&nbsp;--with-ncurses[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;ncurses&nbsp;support&nbsp;(CLI/CGI&nbsp;only)<br>&nbsp;&nbsp;--with-oci8[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Oracle&nbsp;(OCI8)&nbsp;support.&nbsp;DIR&nbsp;defaults&nbsp;to&nbsp;$ORACLE_HOME.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;--with-oci8=instantclient,/path/to/oic/lib&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;an&nbsp;Oracle&nbsp;Instant&nbsp;Client&nbsp;installation<br>&nbsp;&nbsp;--with-adabas[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Adabas&nbsp;D&nbsp;support&nbsp;[/usr/local]<br>&nbsp;&nbsp;--with-sapdb[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;SAP&nbsp;DB&nbsp;support&nbsp;[/usr/local]<br>&nbsp;&nbsp;--with-solid[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Solid&nbsp;support&nbsp;[/usr/local/solid]<br>&nbsp;&nbsp;--with-ibm-db2[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;<a href="http://www.ibm.com/cn" target="_blank">IBM</a>&nbsp;DB2&nbsp;support&nbsp;[/home/db2inst1/sqllib]<br>&nbsp;&nbsp;--with-ODBCRouter[=DIR]&nbsp;Include&nbsp;ODBCRouter.com&nbsp;support&nbsp;[/usr]<br>&nbsp;&nbsp;--with-empress[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Empress&nbsp;support&nbsp;[$EMPRESSPATH]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Empress&nbsp;Version&nbsp;&gt;=&nbsp;8.60&nbsp;required)<br>&nbsp;&nbsp;--with-empress-bcs[=DIR]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Empress&nbsp;Local&nbsp;Access&nbsp;support&nbsp;[$EMPRESSPATH]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Empress&nbsp;Version&nbsp;&gt;=&nbsp;8.60&nbsp;required)<br>&nbsp;&nbsp;--with-birdstep[=DIR]&nbsp;&nbsp;&nbsp;Include&nbsp;Birdstep&nbsp;support&nbsp;[/usr/local/birdstep]<br>&nbsp;&nbsp;--with-custom-odbc[=DIR]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;user&nbsp;defined&nbsp;ODBC&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;ODBC&nbsp;install&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;[/usr/local].&nbsp;Make&nbsp;sure&nbsp;to&nbsp;define&nbsp;CUSTOM_ODBC_LIBS&nbsp;and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;some&nbsp;odbc.h&nbsp;in&nbsp;your&nbsp;include&nbsp;dirs.&nbsp;f.e.&nbsp;you&nbsp;should&nbsp;define&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;following&nbsp;for&nbsp;Sybase&nbsp;SQL&nbsp;Anywhere&nbsp;5.5.00&nbsp;on&nbsp;QNX,&nbsp;prior&nbsp;to<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;running&nbsp;this&nbsp;configure&nbsp;script:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPPFLAGS=&quot;-DODBC_QNX&nbsp;-DSQLANY_BUG&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDFLAGS=-lunix<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CUSTOM_ODBC_LIBS=&quot;-ldblib&nbsp;-lodbc&quot;<br>&nbsp;&nbsp;--with-iodbc[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;iODBC&nbsp;support&nbsp;[/usr/local]<br>&nbsp;&nbsp;--with-esoob[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Easysoft&nbsp;OOB&nbsp;support&nbsp;[/usr/local/easysoft/oob/client]<br>&nbsp;&nbsp;--with-unixODBC[=DIR]&nbsp;&nbsp;&nbsp;Include&nbsp;unixODBC&nbsp;support&nbsp;[/usr/local]<br>&nbsp;&nbsp;--with-dbmaker[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;DBMaker&nbsp;support<br>&nbsp;&nbsp;--enable-pcntl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;pcntl&nbsp;support&nbsp;(CLI/CGI&nbsp;only)<br>&nbsp;&nbsp;--disable-pdo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;PHP&nbsp;Data&nbsp;Objects&nbsp;support<br>&nbsp;&nbsp;--with-pdo-dblib[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;DBLIB-DB&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;FreeTDS&nbsp;home<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory<br>&nbsp;&nbsp;--with-pdo-firebird[=DIR]&nbsp;PDO:&nbsp;Firebird&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;Firebird&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[/opt/firebird]<br>&nbsp;&nbsp;--with-pdo-mysql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;MySQL&nbsp;support.&nbsp;DIR&nbsp;is&nbsp;the&nbsp;MySQL&nbsp;base&nbsp;directory<br>&nbsp;&nbsp;--with-zlib-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDO_MySQL:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libz&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-pdo-oci[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;Oracle&nbsp;OCI&nbsp;support.&nbsp;DIR&nbsp;defaults&nbsp;to&nbsp;$ORACLE_HOME.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;--with-pdo-oci=instantclient,prefix,version&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;an&nbsp;Oracle&nbsp;Instant&nbsp;Client&nbsp;SDK.&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;Linux&nbsp;with&nbsp;10.2.0.3&nbsp;RPMs&nbsp;(for&nbsp;example)&nbsp;use:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--with-pdo-oci=instantclient,/usr,10.2.0.3<br>&nbsp;&nbsp;--with-pdo-odbc=flavour,dir<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;Support&nbsp;for&nbsp;&#39;flavour&#39;&nbsp;ODBC&nbsp;driver.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;and&nbsp;lib&nbsp;dirs&nbsp;are&nbsp;looked&nbsp;for&nbsp;under&nbsp;&#39;dir&#39;.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;flavour&#39;&nbsp;can&nbsp;be&nbsp;one&nbsp;of:&nbsp;&nbsp;ibm-db2,&nbsp;unixODBC,&nbsp;generic<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;&#39;,dir&#39;&nbsp;part&nbsp;is&nbsp;omitted,&nbsp;default&nbsp;for&nbsp;the&nbsp;flavour&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;you&nbsp;have&nbsp;selected&nbsp;will&nbsp;used.&nbsp;e.g.:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--with-pdo-odbc=unixODBC<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;check&nbsp;for&nbsp;unixODBC&nbsp;under&nbsp;/usr/local.&nbsp;You&nbsp;may&nbsp;attempt&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;use&nbsp;an&nbsp;otherwise&nbsp;unsupported&nbsp;driver&nbsp;using&nbsp;the&nbsp;&quot;generic&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flavour.&nbsp;&nbsp;The&nbsp;syntax&nbsp;for&nbsp;generic&nbsp;ODBC&nbsp;support&nbsp;is:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--with-pdo-odbc=generic,dir,libname,ldflags,cflags<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When&nbsp;build&nbsp;as&nbsp;shared&nbsp;the&nbsp;extension&nbsp;filename&nbsp;is&nbsp;always&nbsp;pdo_odbc.so<br>&nbsp;&nbsp;--with-pdo-pgsql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;PostgreSQL&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;PostgreSQL&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;or&nbsp;the&nbsp;path&nbsp;to&nbsp;pg_config<br>&nbsp;&nbsp;--without-pdo-sqlite[=DIR]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDO:&nbsp;sqlite&nbsp;3&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;sqlite&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[BUNDLED]<br>&nbsp;&nbsp;--with-pgsql[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;PostgreSQL&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;PostgreSQL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base&nbsp;install&nbsp;directory&nbsp;or&nbsp;the&nbsp;path&nbsp;to&nbsp;pg_config<br>&nbsp;&nbsp;--disable-posix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;POSIX-like&nbsp;functions<br>&nbsp;&nbsp;--with-pspell[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;PSPELL&nbsp;support.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;Aspell&nbsp;version&nbsp;0.50.0&nbsp;or&nbsp;higher&nbsp;required<br>&nbsp;&nbsp;--with-libedit[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;libedit&nbsp;readline&nbsp;replacement&nbsp;(CLI/CGI&nbsp;only)<br>&nbsp;&nbsp;--with-readline[=DIR]&nbsp;&nbsp;&nbsp;Include&nbsp;readline&nbsp;support&nbsp;(CLI/CGI&nbsp;only)<br>&nbsp;&nbsp;--with-recode[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;recode&nbsp;support<br>&nbsp;&nbsp;--disable-reflection&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;reflection&nbsp;support<br>&nbsp;&nbsp;--disable-session&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;session&nbsp;support<br>&nbsp;&nbsp;--with-mm[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SESSION:&nbsp;Include&nbsp;mm&nbsp;support&nbsp;for&nbsp;session&nbsp;storage<br>&nbsp;&nbsp;--enable-shmop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;shmop&nbsp;support<br>&nbsp;&nbsp;--disable-simplexml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;SimpleXML&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SimpleXML:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-snmp[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;SNMP&nbsp;support<br>&nbsp;&nbsp;--with-openssl-dir[=DIR]&nbsp;&nbsp;SNMP:&nbsp;openssl&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--enable-ucd-snmp-hack&nbsp;&nbsp;&nbsp;&nbsp;SNMP:&nbsp;Enable&nbsp;UCD&nbsp;SNMP&nbsp;hack<br>&nbsp;&nbsp;--enable-soap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;SOAP&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOAP:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--enable-sockets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;sockets&nbsp;support<br>&nbsp;&nbsp;--disable-spl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;Standard&nbsp;PHP&nbsp;Library<br>&nbsp;&nbsp;--without-sqlite=DIR&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;include&nbsp;sqlite&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;sqlite&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;[BUNDLED]<br>&nbsp;&nbsp;--enable-sqlite-utf8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SQLite:&nbsp;Enable&nbsp;UTF-8&nbsp;support&nbsp;for&nbsp;SQLite<br>&nbsp;&nbsp;--with-regex=TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regex&nbsp;library&nbsp;type:&nbsp;system,&nbsp;apache,&nbsp;php.&nbsp;[TYPE=php]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WARNING:&nbsp;Do&nbsp;NOT&nbsp;use&nbsp;unless&nbsp;you&nbsp;know&nbsp;what&nbsp;you&nbsp;are&nbsp;doing!<br>&nbsp;&nbsp;--with-sybase[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Sybase-DB&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;Sybase&nbsp;home<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;[/home/sybase]<br>&nbsp;&nbsp;--with-sybase-ct[=DIR]&nbsp;&nbsp;Include&nbsp;Sybase-CT&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;Sybase&nbsp;home<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;directory&nbsp;[/home/sybase]<br>&nbsp;&nbsp;--enable-sysvmsg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;sysvmsg&nbsp;support<br>&nbsp;&nbsp;--enable-sysvsem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;System&nbsp;V&nbsp;semaphore&nbsp;support<br>&nbsp;&nbsp;--enable-sysvshm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;the&nbsp;System&nbsp;V&nbsp;shared&nbsp;memory&nbsp;support<br>&nbsp;&nbsp;--with-tidy[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;TIDY&nbsp;support<br>&nbsp;&nbsp;--disable-tokenizer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;tokenizer&nbsp;support<br>&nbsp;&nbsp;--enable-wddx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable&nbsp;WDDX&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WDDX:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-libexpat-dir=DIR&nbsp;&nbsp;&nbsp;WDDX:&nbsp;libexpat&nbsp;dir&nbsp;for&nbsp;XMLRPC-EPI&nbsp;(deprecated)<br>&nbsp;&nbsp;--disable-xml&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;XML&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-libexpat-dir=DIR&nbsp;&nbsp;&nbsp;XML:&nbsp;libexpat&nbsp;install&nbsp;prefix&nbsp;(deprecated)<br>&nbsp;&nbsp;--disable-xmlreader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;XMLReader&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLReader:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-xmlrpc[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;XMLRPC-EPI&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLRPC-EPI:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-libexpat-dir=DIR&nbsp;&nbsp;&nbsp;XMLRPC-EPI:&nbsp;libexpat&nbsp;dir&nbsp;for&nbsp;XMLRPC-EPI&nbsp;(deprecated)<br>&nbsp;&nbsp;--with-iconv-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLRPC-EPI:&nbsp;iconv&nbsp;dir&nbsp;for&nbsp;XMLRPC-EPI<br>&nbsp;&nbsp;--disable-xmlwriter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable&nbsp;XMLWriter&nbsp;support<br>&nbsp;&nbsp;--with-libxml-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMLWriter:&nbsp;libxml2&nbsp;install&nbsp;prefix<br>&nbsp;&nbsp;--with-xsl[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;XSL&nbsp;support.&nbsp;&nbsp;DIR&nbsp;is&nbsp;the&nbsp;libxslt&nbsp;base<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;install&nbsp;directory&nbsp;(libxslt&nbsp;&gt;=&nbsp;1.1.0&nbsp;required)<br>&nbsp;&nbsp;--enable-zip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Include&nbsp;Zip&nbsp;read/write&nbsp;support<br>&nbsp;&nbsp;--with-zlib-dir[=DIR]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZIP:&nbsp;Set&nbsp;the&nbsp;path&nbsp;to&nbsp;libz&nbsp;install&nbsp;prefix<br><br>PEAR:<br><br>&nbsp;&nbsp;--with-pear=DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Install&nbsp;PEAR&nbsp;in&nbsp;DIR&nbsp;[PREFIX/lib/php]<br>&nbsp;&nbsp;--without-pear&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Do&nbsp;not&nbsp;install&nbsp;PEAR<br><br>Zend:<br><br>&nbsp;&nbsp;--with-zend-vm=TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;virtual&nbsp;machine&nbsp;dispatch&nbsp;method.&nbsp;Type&nbsp;is<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one&nbsp;of&nbsp;CALL,&nbsp;SWITCH&nbsp;or&nbsp;GOTO&nbsp;[TYPE=CALL]<br>&nbsp;&nbsp;--enable-maintainer-zts&nbsp;Enable&nbsp;thread&nbsp;safety&nbsp;-&nbsp;for&nbsp;code&nbsp;maintainers&nbsp;only!!<br>&nbsp;&nbsp;--disable-inline-optimization&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;building&nbsp;zend_execute.lo&nbsp;fails,&nbsp;try&nbsp;this&nbsp;switch<br>&nbsp;&nbsp;--enable-zend-multibyte&nbsp;Compile&nbsp;with&nbsp;zend&nbsp;multibyte&nbsp;support<br><br>TSRM:<br><br>&nbsp;&nbsp;--with-tsrm-pth[=pth-config]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;GNU&nbsp;Pth<br>&nbsp;&nbsp;--with-tsrm-st&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;SGI&#39;s&nbsp;State&nbsp;Threads<br>&nbsp;&nbsp;--with-tsrm-pthreads&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;POSIX&nbsp;threads&nbsp;(default)<br><br>Libtool:<br><br>&nbsp;&nbsp;--enable-shared[=PKGS]&nbsp;&nbsp;build&nbsp;shared&nbsp;libraries&nbsp;[default=yes]<br>&nbsp;&nbsp;--enable-static[=PKGS]&nbsp;&nbsp;build&nbsp;static&nbsp;libraries&nbsp;[default=yes]<br>&nbsp;&nbsp;--enable-fast-install[=PKGS]&nbsp;&nbsp;optimize&nbsp;for&nbsp;fast&nbsp;installation&nbsp;[default=yes]<br>&nbsp;&nbsp;--with-gnu-ld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assume&nbsp;the&nbsp;C&nbsp;compiler&nbsp;uses&nbsp;GNU&nbsp;ld&nbsp;[default=no]<br>&nbsp;&nbsp;--disable-libtool-lock&nbsp;&nbsp;avoid&nbsp;locking&nbsp;(might&nbsp;break&nbsp;parallel&nbsp;builds)<br>&nbsp;&nbsp;--with-pic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;to&nbsp;use&nbsp;only&nbsp;PIC/non-PIC&nbsp;objects&nbsp;[default=use&nbsp;both]<br>&nbsp;&nbsp;--with-tags[=TAGS]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;additional&nbsp;configurations&nbsp;[automatic]<br><br>&nbsp;&nbsp;--with-gnu-ld&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assume&nbsp;the&nbsp;C&nbsp;compiler&nbsp;uses&nbsp;GNU&nbsp;ld&nbsp;[default=no]]]></description></item><item><link>http://www.517sou.net/blogview.asp?logID=1461</link><title>zend安装、升级配置相关问题</title><author>flyinweb</author><category>技术文摘</category><pubDate>2009-1-6 10:55:19</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1461</guid><description><![CDATA[Zend&nbsp;Optimizer&nbsp;，默认安装，然后选zend的安装路径，php.ini所在的路径，apache启动脚本的路径，然后自动重启apache就安装好了，利用phpinfo信息来判断是否安装正确。&nbsp;<br>&nbsp;&nbsp;如果正确安装应该显示：&nbsp;<br><font color="Red">&nbsp;This&nbsp;program&nbsp;makes&nbsp;use&nbsp;of&nbsp;the&nbsp;Zend&nbsp;Scripting&nbsp;Language&nbsp;Engine:<br>Zend&nbsp;Engine&nbsp;v2.2.0,&nbsp;Copyright&nbsp;(c)&nbsp;1998-2007&nbsp;Zend&nbsp;Technologies<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;Zend&nbsp;Extension&nbsp;Manager&nbsp;v1.2.2,&nbsp;Copyright&nbsp;(c)&nbsp;2003-2007,&nbsp;by&nbsp;Zend&nbsp;Technologies<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;Zend&nbsp;Optimizer&nbsp;v3.3.3,&nbsp;Copyright&nbsp;(c)&nbsp;1998-2007,&nbsp;by&nbsp;Zend&nbsp;Technologies&nbsp;</font><br>&nbsp;&nbsp;<br>默认安装后发现phpinfo信息里面只有with&nbsp;Zend&nbsp;Extension&nbsp;Manager&nbsp;而没有with&nbsp;Zend&nbsp;Optimizer&nbsp;v3.3.3,&nbsp;Copyright&nbsp;(c)&nbsp;1998-2007,&nbsp;by&nbsp;Zend&nbsp;Technologies这一行信息。&nbsp;<br><br>检查我的php.ini信息路径在/usr/local/php5/lib/php.ini,已经生成到/usr/local/Zend/etc/php.ini的链接文件，并且文件后面也追加了&nbsp;<br><div class="code_main">[Zend]<br>zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3<br>zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3<br>zend_optimizer.version=3.3.3<br>zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so<br>zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so</div><br>相关的配置路径&nbsp;<br>测试了很多遍，找不到解决的办法，只是感觉和php的配置文件有关或没有生效，仔细在看phpinfo的信息发现&nbsp;Configuration&nbsp;File&nbsp;(php.ini)&nbsp;Path&nbsp;&nbsp;/usr/local/php5&nbsp;&nbsp;<br><br>而我的php.ini文件是在/usr/local/php5/lib&nbsp;下查看编译php信息看到--with-config-file-path=/usr/local/php5&#39;&nbsp;看来是编译php时已经把php.ini的路径给修改了不是默认的/usr/local/php5/lib下的路径，<br><br>重新按照正确的php.ini路径安装配置或者直接<br>复制实际的php.ini到phpinfo中指定的位置（实际操作实现，验证过）<br><div class="code_main">ln&nbsp;-s&nbsp;/usr/local/Zend/etc/php.ini&nbsp;/you_path/php.ini</div><br>重新启动apache&nbsp;<br><br>查看phpinfo信息&nbsp;Configuration&nbsp;File&nbsp;(php.ini)&nbsp;Path&nbsp;&nbsp;/usr/local/php5&nbsp;&nbsp;<br>Loaded&nbsp;Configuration&nbsp;File&nbsp;&nbsp;/usr/local/Zend/etc/php.ini&nbsp;&nbsp;<br>zend&nbsp;optimizer的信息也正确显示了。]]></description></item><item><link>http://www.517sou.net/blogview.asp?logID=1460</link><title>php configure</title><author>flyinweb</author><category>技术文摘</category><pubDate>2009-1-6 9:25:02</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1460</guid><description><![CDATA[expat,&nbsp;fastcgi,&nbsp;freebsd,&nbsp;libxml,&nbsp;nginx,&nbsp;php,&nbsp;uchome,&nbsp;xml_parser_create<br>&nbsp;<br>freebsd+nginx+php，安装uchome的时候提示找不到xml_parser_create()，php&nbsp;-i&nbsp;，发现libxml是enable的状态。google了一下没有找到解决方案。在php手册里发现了expat的信息，看上去像是另一个xml解析库。既然libxml无效，只好试一下这个了。<br><br>下载expat(<a href="http://sourceforge.net/projects/expat/)" target="_blank">http://sourceforge.net/projects/expat/)</a>,编译，安装，然后是重新编译php。手册里提示需要在configure的时候加入“--with-expat-dir=DIR”，如法炮制发现这个选项是错误的。于是configure&nbsp;–help了一下，发现应该是“--with-libexpat-dir=DIR”(如果你是按默认配置安装的expat，那么DIR的值应该是/usr/local)，修改一下，一切ok。再试xml_parser_create()，问题解决。<br><br>附上php&nbsp;configure参数:<br><div class="code_main">./configure&nbsp;&nbsp;–with-layout=GNU&nbsp;–with-config-file-scan-dir=/usr/local/etc/php&nbsp;–disable-all&nbsp;–enable-libxml&nbsp;–with-libxml-dir=/usr/local&nbsp;–with-libexpat-dir=/usr/local&nbsp;–enable-reflection&nbsp;–program-prefix=&nbsp;–enable-force-cgi-redirect&nbsp;–enable-discard-path&nbsp;–enable-fastcgi&nbsp;–with-regex=php&nbsp;–with-zend-vm=CALL&nbsp;–enable-zend-multibyte&nbsp;–disable-ipv6&nbsp;–prefix=/usr/local&nbsp;–mandir=/usr/local/man&nbsp;–infodir=/usr/local/info/&nbsp;–with-mysql&nbsp;–with-gd&nbsp;–enable-gd-native-ttf&nbsp;–enable-gd-jis-conv</div>]]></description></item><item><link>http://www.517sou.net/blogview.asp?logID=1459</link><title>Token Kidnapping Windows 2k3 PoC exploit</title><author>flyinweb</author><category>DotNet专栏</category><pubDate>2008-12-30 16:02:26</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1459</guid><description>这是篇隐藏日志，请到 flyinweb 's BLOG 的首页查看！</description></item><item><link>http://www.517sou.net/blogview.asp?logID=1458</link><title>Dynamically Templated GridView</title><author>flyinweb</author><category>DotNet专栏</category><pubDate>2008-12-30 9:02:44</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1458</guid><description><![CDATA[Dynamically&nbsp;Templated&nbsp;GridView&nbsp;with&nbsp;Edit,&nbsp;Delete&nbsp;and&nbsp;Insert&nbsp;Options<br><br><strong>Introduction</strong>&nbsp;<br><br>In&nbsp;many&nbsp;situations&nbsp;we&nbsp;want&nbsp;to&nbsp;bind&nbsp;a&nbsp;fully,&nbsp;in-place&nbsp;operational&nbsp;GridView&nbsp;with&nbsp;a&nbsp;dynamically&nbsp;changing&nbsp;data&nbsp;source.&nbsp;This&nbsp;article&nbsp;shows&nbsp;how&nbsp;GridView&nbsp;can&nbsp;be&nbsp;templated&nbsp;programmatically&nbsp;at&nbsp;run&nbsp;time&nbsp;and&nbsp;how&nbsp;is&nbsp;it&nbsp;possible&nbsp;to&nbsp;do&nbsp;edit,&nbsp;insert&nbsp;and&nbsp;delete&nbsp;operations&nbsp;on&nbsp;it.&nbsp;Although&nbsp;just&nbsp;binding&nbsp;the&nbsp;GridView&nbsp;with&nbsp;some&nbsp;dynamically&nbsp;changing&nbsp;datatsource&nbsp;is&nbsp;a&nbsp;simple&nbsp;and&nbsp;straight&nbsp;job&nbsp;which&nbsp;does&nbsp;not&nbsp;need&nbsp;templated&nbsp;GridView,&nbsp;it&nbsp;cannot&nbsp;facilitate&nbsp;us&nbsp;with&nbsp;the&nbsp;aforementioned&nbsp;operations.&nbsp;To&nbsp;make&nbsp;the&nbsp;GridView&nbsp;simultaneously&nbsp;an&nbsp;operational&nbsp;one,&nbsp;we&nbsp;need&nbsp;to&nbsp;template&nbsp;it&nbsp;dynamically&nbsp;which&nbsp;also&nbsp;requires&nbsp;dynamically&nbsp;generated&nbsp;queries&nbsp;for&nbsp;corresponding&nbsp;operations&nbsp;according&nbsp;to&nbsp;the&nbsp;GridView&#39;s&nbsp;data&nbsp;source.<br>It&nbsp;is&nbsp;useful&nbsp;in&nbsp;many&nbsp;applications&nbsp;especially&nbsp;those&nbsp;that&nbsp;require&nbsp;data&nbsp;manipulation&nbsp;functionality&nbsp;of&nbsp;Enterprise&nbsp;Manager&nbsp;on&nbsp;client&nbsp;side&nbsp;i.e.&nbsp;displaying&nbsp;any&nbsp;table&nbsp;of&nbsp;any&nbsp;database&nbsp;with&nbsp;options&nbsp;for&nbsp;all&nbsp;possible&nbsp;operations&nbsp;on&nbsp;client&nbsp;side.&nbsp;This&nbsp;solution&nbsp;provided&nbsp;in&nbsp;this&nbsp;article&nbsp;will&nbsp;be&nbsp;the&nbsp;best&nbsp;and&nbsp;probably&nbsp;the&nbsp;only&nbsp;way&nbsp;to&nbsp;make&nbsp;it&nbsp;all&nbsp;possible.&nbsp;This&nbsp;article&nbsp;shows&nbsp;how&nbsp;ITemplate&nbsp;is&nbsp;implemented&nbsp;effectively&nbsp;to&nbsp;achieve&nbsp;all&nbsp;of&nbsp;this.&nbsp;<br>Figure&nbsp;1<br><img src="attachments/m&#111;nth_0812/2008123009024148557_0.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><br><strong>How&nbsp;it&nbsp;works</strong><br><br>First,&nbsp;we&nbsp;should&nbsp;know&nbsp;what&nbsp;a&nbsp;template&nbsp;is.&nbsp;Generally,&nbsp;a&nbsp;template&nbsp;is&nbsp;description&nbsp;of&nbsp;how&nbsp;a&nbsp;particular&nbsp;item&nbsp;will&nbsp;be&nbsp;rendered&nbsp;at&nbsp;run&nbsp;time.&nbsp;It&nbsp;determines&nbsp;the&nbsp;layout&nbsp;and&nbsp;binding&nbsp;of&nbsp;ASP.NET&nbsp;server&nbsp;control(s)&nbsp;contained&nbsp;by&nbsp;it.&nbsp;We&nbsp;may&nbsp;put&nbsp;this&nbsp;description&nbsp;at&nbsp;design&nbsp;time&nbsp;or&nbsp;at&nbsp;run&nbsp;time&nbsp;according&nbsp;to&nbsp;our&nbsp;need.&nbsp;At&nbsp;design&nbsp;time&nbsp;we&nbsp;can&nbsp;define&nbsp;templates&nbsp;declaratively&nbsp;using&nbsp;inline&nbsp;tags&nbsp;in&nbsp;aspx&nbsp;source&nbsp;of&nbsp;GridView&nbsp;(the&nbsp;following&nbsp;listing&nbsp;shows&nbsp;this).&nbsp;Since&nbsp;we&nbsp;are&nbsp;going&nbsp;for&nbsp;a&nbsp;case&nbsp;where&nbsp;we&nbsp;don’t&nbsp;know&nbsp;the&nbsp;number&nbsp;of&nbsp;fields&nbsp;of&nbsp;a&nbsp;table&nbsp;and&nbsp;their&nbsp;description&nbsp;(Name,&nbsp;Data&nbsp;Type&nbsp;etc)&nbsp;in&nbsp;advance&nbsp;therefore&nbsp;we&nbsp;need&nbsp;to&nbsp;create&nbsp;the&nbsp;templates&nbsp;dynamically&nbsp;according&nbsp;to&nbsp;fields&nbsp;of&nbsp;the&nbsp;particular&nbsp;table.&nbsp;This&nbsp;is&nbsp;where&nbsp;the&nbsp;concept&nbsp;of&nbsp;dynamically&nbsp;templated&nbsp;GridView&nbsp;comes.&nbsp;This&nbsp;is&nbsp;a&nbsp;GridView&nbsp;that&nbsp;can&nbsp;be&nbsp;bound&nbsp;to&nbsp;any&nbsp;table&nbsp;of&nbsp;any&nbsp;database&nbsp;of&nbsp;any&nbsp;server,&nbsp;providing&nbsp;Insert,&nbsp;Edit&nbsp;and&nbsp;Delete&nbsp;option&nbsp;simultaneously.&nbsp;As&nbsp;long&nbsp;as&nbsp;we&nbsp;know&nbsp;the&nbsp;name&nbsp;of&nbsp;fields&nbsp;in&nbsp;advance&nbsp;we&nbsp;don’t&nbsp;need&nbsp;,even,&nbsp;to&nbsp;know&nbsp;about&nbsp;ITemplate&nbsp;but&nbsp;to&nbsp;create&nbsp;templates&nbsp;dynamically&nbsp;we&nbsp;have&nbsp;to&nbsp;implement&nbsp;ITemplate&nbsp;interface.&nbsp;&nbsp;We&nbsp;need&nbsp;to&nbsp;generate&nbsp;ItemTemplate&nbsp;and&nbsp;EditItemTemplate&nbsp;dynamically&nbsp;for&nbsp;each&nbsp;field&nbsp;of&nbsp;the&nbsp;table,&nbsp;plus&nbsp;a&nbsp;field&nbsp;for&nbsp;buttons&nbsp;required&nbsp;for&nbsp;each&nbsp;command.&nbsp;The&nbsp;former&nbsp;lets&nbsp;to&nbsp;specify&nbsp;how&nbsp;an&nbsp;item&nbsp;will&nbsp;look&nbsp;like&nbsp;in&nbsp;normal&nbsp;mode&nbsp;(usually&nbsp;displayed&nbsp;in&nbsp;labels)&nbsp;while&nbsp;the&nbsp;later&nbsp;lets&nbsp;to&nbsp;specify&nbsp;&nbsp;how&nbsp;an&nbsp;item&nbsp;will&nbsp;change&nbsp;when&nbsp;it&nbsp;is&nbsp;put&nbsp;into&nbsp;Edit&nbsp;mode&nbsp;(displayed&nbsp;in&nbsp;text&nbsp;boxes).&nbsp;<br>ITemplate&nbsp;has&nbsp;one&nbsp;method&nbsp;named&nbsp;InstantiateIn,&nbsp;its&nbsp;explanation&nbsp;will&nbsp;come&nbsp;later.&nbsp;The&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;which&nbsp;implements&nbsp;this&nbsp;interface,&nbsp;exposes&nbsp;any&nbsp;template&nbsp;property&nbsp;of&nbsp;GridView&nbsp;as&nbsp;its&nbsp;own&nbsp;property,&nbsp;hence&nbsp;the&nbsp;default&nbsp;layout&nbsp;of&nbsp;a&nbsp;template&nbsp;is&nbsp;overridden.&nbsp;<br>The&nbsp;following&nbsp;listing&nbsp;shows&nbsp;how&nbsp;to&nbsp;create&nbsp;template&nbsp;fields&nbsp;at&nbsp;design&nbsp;time.&nbsp;It&nbsp;shows&nbsp;that&nbsp;we&nbsp;must&nbsp;know&nbsp;number&nbsp;of&nbsp;fields&nbsp;and&nbsp;their&nbsp;name&nbsp;in&nbsp;advance&nbsp;to&nbsp;create&nbsp;their&nbsp;templates.&nbsp;This&nbsp;is&nbsp;NOT&nbsp;required&nbsp;in&nbsp;our&nbsp;case.<br>Listing&nbsp;1<br><div class="code_main">&lt;asp:GridView&nbsp;ID=&quot;TableGridView&quot;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runat=&quot;server&quot;&nbsp;&nbsp;AutoGenerateColumns=&quot;False&quot;&nbsp;&gt;<br>&nbsp;&nbsp;&nbsp;&lt;Columns&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TemplateField&nbsp;HeaderText=&quot;Name&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:Label&nbsp;id=&quot;lblName&quot;&nbsp;Runat=&quot;Server&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Text=&#39;&lt;%#&nbsp;Eval(&quot;pub_name&quot;)&nbsp;%&gt;&#39;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/ItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;EditItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;asp:TextBox&nbsp;id=&quot;tbName&quot;&nbsp;Runat=&quot;Server&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Text=&#39;&lt;%#&nbsp;Bind(&quot;pub_name&quot;)&nbsp;%&gt;&#39;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/EditItemTemplate&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/asp:TemplateField&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;....&nbsp;&nbsp;&nbsp;<br>&nbsp;<br>&nbsp;&nbsp;&lt;/Columns<br>&lt;/asp:GridView&gt;</div><br>&nbsp;<br>I&nbsp;have&nbsp;implemented&nbsp;ITemplate&nbsp;in&nbsp;a&nbsp;separate&nbsp;class,&nbsp;DynamicallyTemplatedGridViewHandler,&nbsp;for&nbsp;reusability&nbsp;and&nbsp;better&nbsp;understanding.&nbsp;I&nbsp;will&nbsp;explain&nbsp;working&nbsp;and&nbsp;usage&nbsp;of&nbsp;this&nbsp;class&nbsp;since&nbsp;they&nbsp;play&nbsp;a&nbsp;key&nbsp;role&nbsp;in&nbsp;achieving&nbsp;all&nbsp;of&nbsp;this.<br>We&nbsp;can&nbsp;divide&nbsp;the&nbsp;whole&nbsp;working&nbsp;in&nbsp;two&nbsp;parts:&nbsp;<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Writing&nbsp;a&nbsp;class&nbsp;which&nbsp;implements&nbsp;ITemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Using&nbsp;the&nbsp;class&nbsp;which&nbsp;implements&nbsp;ITemplate<br><br><strong>Writing&nbsp;a&nbsp;class&nbsp;which&nbsp;implements&nbsp;ITemplate</strong><br>Here&nbsp;is&nbsp;the&nbsp;skeleton&nbsp;of&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;implementing&nbsp;ITemplate&nbsp;with&nbsp;a&nbsp;list&nbsp;of&nbsp;data&nbsp;members&nbsp;and&nbsp;methods.<br>Listing&nbsp;2<br><div class="code_main">public&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;:&nbsp;ITemplate<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;ListItemType&nbsp;ItemType;<br>&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;FieldName;<br>&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;InfoType;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType&nbsp;Item_type,<br>&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;field_name,&nbsp;string&nbsp;control_type);<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;InstantiateIn(System.Web.UI.Control&nbsp;Container);<br>&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;OnDataBinding(object&nbsp;sender,&nbsp;EventArgs&nbsp;e);<br>}</div><br>This&nbsp;class&nbsp;has&nbsp;three&nbsp;data&nbsp;members:&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;ListItemType&nbsp;ItemType;<br>&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;FieldName;<br>&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;InfoType;<br>ItemType&nbsp;keeps&nbsp;the&nbsp;type&nbsp;of&nbsp;a&nbsp;list&nbsp;item&nbsp;type:&nbsp;Item,&nbsp;EditItem,&nbsp;Header,&nbsp;Footer,&nbsp;AlternatingItem,&nbsp;Pager,&nbsp;SelecetdItem&nbsp;or&nbsp;Separator.&nbsp;In&nbsp;this&nbsp;demo&nbsp;version&nbsp;we&nbsp;need&nbsp;only&nbsp;three&nbsp;of&nbsp;these;&nbsp;we&nbsp;need&nbsp;Header&nbsp;(For&nbsp;heading&nbsp;of&nbsp;each&nbsp;column),&nbsp;Item&nbsp;(for&nbsp;showing&nbsp;fields&nbsp;when&nbsp;GridView&nbsp;will&nbsp;be&nbsp;in&nbsp;normal&nbsp;mode)&nbsp;and&nbsp;EditItem&nbsp;(for&nbsp;showing&nbsp;fields&nbsp;when&nbsp;GridView&nbsp;will&nbsp;be&nbsp;in&nbsp;Edit&nbsp;mode).&nbsp;<br>FieldName&nbsp;keeps&nbsp;the&nbsp;name&nbsp;of&nbsp;each&nbsp;template&nbsp;field&nbsp;that&nbsp;will&nbsp;be&nbsp;displayed&nbsp;in&nbsp;the&nbsp;header.<br>InfoType&nbsp;keeps&nbsp;an&nbsp;indicator&nbsp;in&nbsp;string&nbsp;form&nbsp;for&nbsp;a&nbsp;type&nbsp;of&nbsp;information&nbsp;within&nbsp;a&nbsp;template&nbsp;field&nbsp;i.e.&nbsp;whether&nbsp;a&nbsp;template&nbsp;field&nbsp;has&nbsp;information&nbsp;of&nbsp;&quot;Command&quot;&nbsp;or&nbsp;&quot;String&quot;&nbsp;so&nbsp;that&nbsp;later&nbsp;data&nbsp;retrieval&nbsp;and&nbsp;data&nbsp;binding&nbsp;of&nbsp;that&nbsp;particular&nbsp;child&nbsp;control&nbsp;will&nbsp;be&nbsp;made&nbsp;accordingly.&nbsp;A&nbsp;&quot;Command&quot;&nbsp;(Edit,&nbsp;Delete,&nbsp;and&nbsp;Insert)&nbsp;requires&nbsp;instantiation&nbsp;in&nbsp;the&nbsp;Button&nbsp;control&nbsp;while&nbsp;he&nbsp;&quot;String&quot;&nbsp;requires&nbsp;a&nbsp;Label&nbsp;or&nbsp;TextBox.<br>Now,&nbsp;coming&nbsp;to&nbsp;the&nbsp;member&nbsp;methods&nbsp;listed&nbsp;above,&nbsp;there&nbsp;is&nbsp;a&nbsp;constructer&nbsp;which&nbsp;simply&nbsp;sets&nbsp;the&nbsp;aforementioned&nbsp;data&nbsp;members&nbsp;with&nbsp;those&nbsp;passed&nbsp;as&nbsp;parameters.<br>Listing&nbsp;3<br><div class="code_main">public&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType&nbsp;item_type,&nbsp;string&nbsp;field_name,<br>&nbsp;string&nbsp;control_type)<br>{<br>&nbsp;&nbsp;ItemType&nbsp;=&nbsp;item_type;<br>&nbsp;&nbsp;FieldName&nbsp;=&nbsp;field_name;<br>&nbsp;&nbsp;InfoType&nbsp;=&nbsp;info_type;<br>}</div><br>Here&nbsp;is&nbsp;the&nbsp;explanation&nbsp;of&nbsp;InstantiateIn&nbsp;the&nbsp;only&nbsp;method&nbsp;of&nbsp;ITemplate&nbsp;being&nbsp;implemented&nbsp;by&nbsp;our&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler.<br>InstantiateIn<br>InstantiateIn&nbsp;ensures&nbsp;that&nbsp;the&nbsp;list&nbsp;item&nbsp;type&nbsp;of&nbsp;each&nbsp;template&nbsp;is&nbsp;created&nbsp;in&nbsp;its&nbsp;appropriate&nbsp;control.&nbsp;For&nbsp;better&nbsp;understanding&nbsp;of&nbsp;functionality&nbsp;of&nbsp;this&nbsp;method&nbsp;see&nbsp;its&nbsp;name&nbsp;&quot;InstantiateIn.&quot;&nbsp;It&nbsp;means&nbsp;&quot;Instantiate&nbsp;Item&nbsp;In&nbsp;Literal/Label/TextBox/Button/.&quot;&nbsp;The&nbsp;choice&nbsp;will&nbsp;be&nbsp;according&nbsp;to&nbsp;the&nbsp;requirement.&nbsp;Like&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;a&nbsp;Header,&nbsp;it&nbsp;is&nbsp;instantiated&nbsp;in&nbsp;Literal&nbsp;control&nbsp;as&nbsp;shown&nbsp;in&nbsp;this&nbsp;part&nbsp;of&nbsp;the&nbsp;implementation&nbsp;of&nbsp;InstantiateIn.<br>InstantiateIn&nbsp;takes&nbsp;a&nbsp;&quot;Container,&quot;&nbsp;a&nbsp;Control&nbsp;type&nbsp;object&nbsp;as&nbsp;a&nbsp;parameter.&nbsp;Container&#39;s&nbsp;control&nbsp;collection&nbsp;is&nbsp;filled&nbsp;with&nbsp;all&nbsp;controls&nbsp;in&nbsp;which&nbsp;items&nbsp;of&nbsp;each&nbsp;type&nbsp;are&nbsp;instantiated.&nbsp;&nbsp;Its&nbsp;implementation&nbsp;in&nbsp;the&nbsp;current&nbsp;scenario&nbsp;is&nbsp;a&nbsp;little&nbsp;lengthy,&nbsp;yet&nbsp;it&nbsp;is&nbsp;quite&nbsp;easy&nbsp;as&nbsp;we&nbsp;have&nbsp;to&nbsp;do&nbsp;a&nbsp;similar&nbsp;type&nbsp;of&nbsp;job&nbsp;with&nbsp;each&nbsp;control;&nbsp;instantiate&nbsp;it,&nbsp;set&nbsp;its&nbsp;text&nbsp;property&nbsp;with&nbsp;FieldName&nbsp;and&nbsp;add&nbsp;it&nbsp;into&nbsp;Container&#39;s&nbsp;control&nbsp;collection.&nbsp;<br>For&nbsp;example,&nbsp;below&nbsp;the&nbsp;code&nbsp;of&nbsp;InstantiateIn&nbsp;shows&nbsp;that&nbsp;if&nbsp;the&nbsp;ItemType&nbsp;is&nbsp;a&nbsp;Header,&nbsp;then&nbsp;it&nbsp;creates&nbsp;a&nbsp;literal&nbsp;object&nbsp;called&nbsp;header_literal.&nbsp;After&nbsp;making&nbsp;it&nbsp;bold,&nbsp;set&nbsp;the&nbsp;text&nbsp;property&nbsp;of&nbsp;header_literal&nbsp;with&nbsp;FieldName.&nbsp;Finally,&nbsp;add&nbsp;this&nbsp;control&nbsp;to&nbsp;the&nbsp;control&nbsp;collection&nbsp;of&nbsp;the&nbsp;Container&nbsp;control&nbsp;passed&nbsp;as&nbsp;parameter&nbsp;to&nbsp;InstantiateIn&nbsp;method.&nbsp;<br>Similarly,&nbsp;we&nbsp;have&nbsp;to&nbsp;write&nbsp;instantiation&nbsp;code&nbsp;for&nbsp;ItemType&nbsp;if&nbsp;it&nbsp;is&nbsp;&quot;Item&quot;&nbsp;and&nbsp;&quot;EditItem.&quot;&nbsp;In&nbsp;case&nbsp;the&nbsp;ItemType&nbsp;is&nbsp;&quot;Item&quot;&nbsp;(fields&nbsp;look&nbsp;when&nbsp;GridView&nbsp;is&nbsp;in&nbsp;normal&nbsp;mode),&nbsp;we&nbsp;need&nbsp;one&nbsp;more&nbsp;check&nbsp;inside&nbsp;it&nbsp;to&nbsp;see&nbsp;that&nbsp;InfoType&nbsp;tells&nbsp;whether&nbsp;the&nbsp;Item&nbsp;will&nbsp;be&nbsp;instantiated&nbsp;with&nbsp;a&nbsp;Button&nbsp;(Edit,&nbsp;Insert,&nbsp;and&nbsp;Delete)&nbsp;or&nbsp;Label.&nbsp;If&nbsp;InfoType&nbsp;is&nbsp;a&nbsp;Button&nbsp;then&nbsp;it&nbsp;creates&nbsp;three&nbsp;buttons&nbsp;for&nbsp;the&nbsp;aforementioned&nbsp;tasks.&nbsp;It&nbsp;is&nbsp;simple&nbsp;to&nbsp;do;&nbsp;create&nbsp;a&nbsp;button&nbsp;object,&nbsp;set&nbsp;its&nbsp;all&nbsp;properties&nbsp;accordingly,&nbsp;also&nbsp;add&nbsp;the&nbsp;button&#39;s&nbsp;click&nbsp;event&nbsp;handler&nbsp;and&nbsp;finally,&nbsp;add&nbsp;it&nbsp;into&nbsp;the&nbsp;control&nbsp;collection&nbsp;of&nbsp;the&nbsp;control&nbsp;(Container)&nbsp;passed&nbsp;as&nbsp;an&nbsp;argument.<br>Listing&nbsp;4<br><div class="code_main">public&nbsp;void&nbsp;InstantiateIn(System.Web.UI.Control&nbsp;Container)<br>{<br>&nbsp;&nbsp;switch&nbsp;(ItemType)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ListItemType.Header:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Literal&nbsp;header_ltrl&nbsp;=&nbsp;new&nbsp;Literal();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header_ltrl.Text&nbsp;=&nbsp;&quot;b&gt;&quot;&nbsp;+&nbsp;FieldName&nbsp;+&nbsp;&quot;b&gt;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Container.Controls.Add(header_ltrl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ListItemType.Item:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(InfoType)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;Button&quot;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageButton&nbsp;edit_button&nbsp;=&nbsp;new&nbsp;ImageButton();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_button.ID&nbsp;=&nbsp;&quot;edit_button&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_button.ImageUrl&nbsp;=&nbsp;&quot;~/images/edit.gif&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_button.CommandName&nbsp;=&nbsp;&quot;Edit&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_button.Click&nbsp;+=&nbsp;new&nbsp;ImageClickEventHandler(edit_button_Click);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;edit_button.ToolTip&nbsp;=&nbsp;&quot;Edit&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Container.Controls.Add(edit_button);<br>/*Similarly,&nbsp;add&nbsp;button&nbsp;for&nbsp;delete&nbsp;just&nbsp;set&nbsp;its<br>&nbsp;command&nbsp;to&nbsp;equal&nbsp;to&nbsp;&quot;Delete.&quot;&nbsp;It&nbsp;is&nbsp;important&nbsp;to&nbsp;know&nbsp;when<br>&nbsp;&quot;insert&quot;&nbsp;button&nbsp;is&nbsp;added,&nbsp;its&nbsp;CommandName&nbsp;is&nbsp;set&nbsp;to&nbsp;&quot;Edit&quot;&nbsp;like<br>&nbsp;that&nbsp;of&nbsp;the&nbsp;&quot;edi&quot;&nbsp;button&nbsp;because&nbsp;we&nbsp;want&nbsp;the&nbsp;GridView&nbsp;to&nbsp;enter&nbsp;into<br>&nbsp;Edit&nbsp;mode&nbsp;and&nbsp;this&nbsp;time&nbsp;we&nbsp;also&nbsp;want&nbsp;the&nbsp;text&nbsp;boxes&nbsp;for&nbsp;corresponding&nbsp;fields<br>&nbsp;empty*/&nbsp;<br>ImageButton&nbsp;insert_button&nbsp;=&nbsp;new&nbsp;ImageButton();<br>insert_button.ID&nbsp;=&nbsp;&quot;insert_button&quot;;<br>insert_button.ImageUrl&nbsp;=&nbsp;&quot;~/images/insert.bmp&quot;;<br>insert_button.CommandName&nbsp;=&nbsp;&quot;Edit&quot;;<br>insert_button.ToolTip&nbsp;=&nbsp;&quot;Insert&quot;;<br>insert_button.Click&nbsp;+=&nbsp;new&nbsp;ImageClickEventHandler(insert_button_Click);<br>Container.Controls.Add(insert_button);<br>default:<br>&nbsp;&nbsp;Label&nbsp;field_lbl&nbsp;=&nbsp;new&nbsp;Label();<br>&nbsp;&nbsp;field_lbl.ID&nbsp;=&nbsp;FieldName;<br>&nbsp;&nbsp;field_lbl.Text&nbsp;=&nbsp;String.Empty;<br>&nbsp;&nbsp;field_lbl.DataBinding&nbsp;+=&nbsp;new&nbsp;EventHandler(OnDataBinding);<br>&nbsp;&nbsp;Container.Controls.Add(field_lbl);<br>&nbsp;&nbsp;break;<br>}<br>break;<br>case&nbsp;ListItemType.EditItem:<br>&nbsp;&nbsp;if&nbsp;(InfoType&nbsp;==&nbsp;&quot;Button&quot;)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;ImageButton&nbsp;update_button&nbsp;=&nbsp;new&nbsp;ImageButton();<br>&nbsp;&nbsp;&nbsp;&nbsp;update_button.ID&nbsp;=&nbsp;&quot;update_button&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;update_button.CommandName&nbsp;=&nbsp;&quot;Update&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;update_button.ImageUrl&nbsp;=&nbsp;&quot;~/images/update.gif&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;update_button.ToolTip&nbsp;=&nbsp;&quot;Update&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;update_button.OnClientClick&nbsp;=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;return&nbsp;confirm(&#39;Are&nbsp;you&nbsp;sure&nbsp;to&nbsp;update&nbsp;the&nbsp;record?&#39;)&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;Container.Controls.Add(update_button);<br>&nbsp;<br>//&nbsp;Similarly,&nbsp;add&nbsp;a&nbsp;button&nbsp;for&nbsp;Cancel<br>&nbsp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else<br>//&nbsp;if&nbsp;other&nbsp;key&nbsp;and&nbsp;non&nbsp;key&nbsp;fields&nbsp;then&nbsp;bind&nbsp;textboxes&nbsp;with&nbsp;texts<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;TextBox&nbsp;field_txtbox&nbsp;=&nbsp;new&nbsp;TextBox();<br>&nbsp;&nbsp;&nbsp;&nbsp;field_txtbox.ID&nbsp;=&nbsp;FieldName;<br>&nbsp;&nbsp;&nbsp;&nbsp;field_txtbox.Text&nbsp;=&nbsp;String.Empty;<br>//&nbsp;if&nbsp;to&nbsp;update&nbsp;then&nbsp;bind&nbsp;the&nbsp;textboxes&nbsp;with&nbsp;coressponding&nbsp;field&nbsp;texts<br>//otherwise&nbsp;for&nbsp;insert&nbsp;no&nbsp;need&nbsp;to&nbsp;bind&nbsp;it&nbsp;with&nbsp;text<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((int)new&nbsp;Page().Session[&quot;InsertFlag&quot;]&nbsp;==&nbsp;0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_txtbox.DataBinding&nbsp;+=&nbsp;new&nbsp;EventHandler(OnDataBinding);<br>&nbsp;&nbsp;&nbsp;&nbsp;Container.Controls.Add(field_txtbox);<br>&nbsp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;break;<br>}<br>}</div><br>When&nbsp;InfoType&nbsp;is&nbsp;not&nbsp;a&nbsp;Command&nbsp;it&nbsp;means&nbsp;we&nbsp;have&nbsp;to&nbsp;instantiate&nbsp;it&nbsp;with&nbsp;a&nbsp;label&nbsp;as&nbsp;in&nbsp;GridView&#39;s&nbsp;normal&nbsp;mode&nbsp;when&nbsp;each&nbsp;cell&nbsp;text&nbsp;of&nbsp;GridView&#39;s&nbsp;rows&nbsp;is&nbsp;displayed&nbsp;in&nbsp;label.&nbsp;Therefore,&nbsp;by&nbsp;default,&nbsp;control&nbsp;is&nbsp;instantiated&nbsp;with&nbsp;Label&nbsp;and&nbsp;is&nbsp;added&nbsp;into&nbsp;the&nbsp;Container.&nbsp;Since&nbsp;we&nbsp;have&nbsp;no&nbsp;more&nbsp;info&nbsp;types&nbsp;(other&nbsp;than&nbsp;command&nbsp;and&nbsp;string)&nbsp;then&nbsp;no&nbsp;further&nbsp;checks&nbsp;are&nbsp;required.&nbsp;We&nbsp;come&nbsp;to&nbsp;the&nbsp;outer&nbsp;check&nbsp;when&nbsp;ItemType&nbsp;is&nbsp;EditItem.&nbsp;Now,&nbsp;we&nbsp;need&nbsp;an&nbsp;inner&nbsp;check&nbsp;for&nbsp;info&nbsp;type&nbsp;(command&nbsp;or&nbsp;string).&nbsp;The&nbsp;template&nbsp;field&nbsp;will&nbsp;be&nbsp;instantiated&nbsp;in&nbsp;Button&nbsp;if&nbsp;the&nbsp;info&nbsp;type&nbsp;is&nbsp;Command;&nbsp;otherwise&nbsp;it&nbsp;requires&nbsp;TextBox&nbsp;for&nbsp;the&nbsp;cell&nbsp;text&nbsp;of&nbsp;edit&nbsp;item.&nbsp;<br>It&nbsp;is&nbsp;important&nbsp;to&nbsp;know&nbsp;that&nbsp;the&nbsp;CommandName&nbsp;of&nbsp;insert_button&nbsp;is&nbsp;set&nbsp;to&nbsp;&quot;Edit&quot;&nbsp;just&nbsp;to&nbsp;take&nbsp;advantage&nbsp;of&nbsp;the&nbsp;Edit&nbsp;mode&nbsp;that&nbsp;provides&nbsp;text&nbsp;boxes&nbsp;for&nbsp;all&nbsp;editable&nbsp;items.&nbsp;If&nbsp;the&nbsp;these&nbsp;text&nbsp;boxes&nbsp;are&nbsp;emptied,&nbsp;they&nbsp;can&nbsp;be&nbsp;used&nbsp;for&nbsp;insertion&nbsp;instead&nbsp;of&nbsp;editing&nbsp;without&nbsp;dedicating&nbsp;an&nbsp;extra&nbsp;row&nbsp;for&nbsp;it.&nbsp;This&nbsp;is&nbsp;easy&nbsp;and&nbsp;handy&nbsp;as&nbsp;it&nbsp;becomes&nbsp;a&nbsp;better&nbsp;approach&nbsp;when&nbsp;it&nbsp;is&nbsp;not&nbsp;known&nbsp;in&nbsp;advance&nbsp;how&nbsp;many&nbsp;columns&nbsp;there&nbsp;are&nbsp;in&nbsp;GridView&#39;s&nbsp;data&nbsp;source.&nbsp;I&nbsp;have&nbsp;taken&nbsp;a&nbsp;session&nbsp;variable&nbsp;InsertFlag&nbsp;that&nbsp;is&nbsp;set&nbsp;to&nbsp;0&nbsp;and&nbsp;1&nbsp;for&nbsp;Edit&nbsp;and&nbsp;Inert&nbsp;operations&nbsp;respectively.&nbsp;<br>Since&nbsp;we&nbsp;have&nbsp;to&nbsp;bind&nbsp;the&nbsp;labels&nbsp;in&nbsp;Item&nbsp;template&nbsp;and&nbsp;text&nbsp;boxes&nbsp;in&nbsp;EditItem&nbsp;template&nbsp;with&nbsp;corresponding&nbsp;cell&nbsp;values,&nbsp;the&nbsp;data&nbsp;binding&nbsp;event&nbsp;handler&nbsp;OnDataBinding&nbsp;of&nbsp;both&nbsp;label&nbsp;and&nbsp;text&nbsp;box&nbsp;populates&nbsp;the&nbsp;fields&nbsp;with&nbsp;cell&nbsp;values&nbsp;accordingly.<br>And&nbsp;you&nbsp;might&nbsp;also&nbsp;want&nbsp;to&nbsp;know&nbsp;how&nbsp;text&nbsp;boxes&nbsp;for&nbsp;each&nbsp;field&nbsp;get&nbsp;emptied&nbsp;when&nbsp;Insert&nbsp;button&nbsp;is&nbsp;clicked.&nbsp;The&nbsp;solution&nbsp;is&nbsp;simple;&nbsp;do&nbsp;not&nbsp;bind&nbsp;them&nbsp;with&nbsp;a&nbsp;database&nbsp;and&nbsp;apply&nbsp;a&nbsp;check&nbsp;while&nbsp;adding&nbsp;the&nbsp;data&nbsp;binding&nbsp;event&nbsp;handler&nbsp;of&nbsp;text&nbsp;box.&nbsp;Do&nbsp;not&nbsp;call&nbsp;OnDataBinding&nbsp;if&nbsp;the&nbsp;insert&nbsp;button&nbsp;is&nbsp;clicked.&nbsp;<br>Listing&nbsp;5<br><div class="code_main">if&nbsp;((int)new&nbsp;Page().Session[&quot;InsertFlag&quot;]&nbsp;==&nbsp;0)<br>&nbsp;&nbsp;field_txtbox.DataBinding&nbsp;+=&nbsp;new&nbsp;EventHandler(OnDataBinding);</div><br><br><strong>DataBinding&nbsp;Event&nbsp;Handler</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>The&nbsp;implementation&nbsp;of&nbsp;the&nbsp;data&nbsp;binding&nbsp;event&nbsp;handler&nbsp;&quot;OnDataBindin&quot;&#39;&nbsp;is&nbsp;simple.&nbsp;First,&nbsp;we&nbsp;get&nbsp;the&nbsp;&quot;bound_value_object&quot;&nbsp;that&nbsp;is&nbsp;returned&nbsp;by&nbsp;the&nbsp;static&nbsp;method&nbsp;Eval&nbsp;of&nbsp;DataBinder&nbsp;class&nbsp;which&nbsp;takes&nbsp;two&nbsp;parameters.&nbsp;&nbsp;One&nbsp;is&nbsp;of&nbsp;type&nbsp;object&nbsp;called&nbsp;&quot;data_item_container&quot;&nbsp;(containing&nbsp;the&nbsp;DataItem&nbsp;that&nbsp;is&nbsp;assigned&nbsp;with&nbsp;sender&nbsp;control&#39;s&nbsp;NamingConatiner)&nbsp;and&nbsp;other&nbsp;is&nbsp;the&nbsp;string&nbsp;expression,&nbsp;FieldName.&nbsp;Once&nbsp;we&nbsp;get&nbsp;this&nbsp;bound_value_object,&nbsp;we&nbsp;assign&nbsp;its&nbsp;value&nbsp;(string)&nbsp;to&nbsp;the&nbsp;Text&nbsp;property&nbsp;of&nbsp;Label&nbsp;(if&nbsp;ItemType&nbsp;is&nbsp;Item;&nbsp;for&nbsp;normal&nbsp;mode)&nbsp;and&nbsp;TextBox&nbsp;(if&nbsp;ItemType&nbsp;is&nbsp;EditItem;&nbsp;for&nbsp;Edit&nbsp;mode).&nbsp;<br>Listing&nbsp;6<br><div class="code_main">private&nbsp;void&nbsp;OnDataBinding(object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;object&nbsp;bound_value_obj&nbsp;=&nbsp;null;<br>&nbsp;&nbsp;&nbsp;&nbsp;Control&nbsp;ctrl&nbsp;=&nbsp;(Control)sender;<br>&nbsp;&nbsp;&nbsp;&nbsp;IDataItemContainer&nbsp;data_item_container&nbsp;=&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;(IDataItemContainer)ctrl.NamingContainer;<br>&nbsp;&nbsp;&nbsp;&nbsp;bound_value_obj&nbsp;=&nbsp;DataBinder.Eval(data_item_container.DataItem,&nbsp;FieldName);<br>&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(ItemType)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ListItemType.Item:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label&nbsp;field_ltrl&nbsp;=&nbsp;(Label)sender;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_ltrl.Text&nbsp;=&nbsp;bound_value_obj.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ListItemType.EditItem:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextBox&nbsp;field_txtbox&nbsp;=&nbsp;(TextBox)sender;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field_txtbox.Text&nbsp;=&nbsp;bound_value_obj.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;}</div><br>The&nbsp;implementation&nbsp;of&nbsp;ITemplate&nbsp;is&nbsp;complete,&nbsp;although&nbsp;I&nbsp;want&nbsp;to&nbsp;mention&nbsp;that&nbsp;there&nbsp;are&nbsp;some&nbsp;event&nbsp;handlers,&nbsp;&quot;insert_button_Click&quot;&nbsp;and&nbsp;&quot;edit_button_Click&quot;&nbsp;for&nbsp;Insert&nbsp;and&nbsp;Edit&nbsp;buttons&nbsp;respectively.&nbsp;They&nbsp;do&nbsp;nothing&nbsp;except&nbsp;the&nbsp;former&nbsp;sets&nbsp;the&nbsp;Session[InsertFlag]&nbsp;to&nbsp;1&nbsp;and&nbsp;the&nbsp;later&nbsp;sets&nbsp;it&nbsp;to&nbsp;0.&nbsp;&nbsp;&nbsp;<br>Using&nbsp;the&nbsp;class&nbsp;which&nbsp;implements&nbsp;ITemplate<br><br>Now&nbsp;I&nbsp;will&nbsp;show&nbsp;you&nbsp;how&nbsp;to&nbsp;use&nbsp;the&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;which&nbsp;implements&nbsp;ITemplate.&nbsp;<br>Add&nbsp;a&nbsp;new&nbsp;page&nbsp;to&nbsp;your&nbsp;project;&nbsp;in&nbsp;the&nbsp;demo&nbsp;it&nbsp;is&nbsp;default.aspx.&nbsp;Drop&nbsp;GridView&nbsp;control&nbsp;on&nbsp;it.&nbsp;&nbsp;Name&nbsp;it&nbsp;TableGridView&nbsp;and&nbsp;set&nbsp;its&nbsp;AutoGenerateColumns&nbsp;property&nbsp;to&nbsp;false&nbsp;and&nbsp;add&nbsp;the&nbsp;following&nbsp;event&nbsp;handlers&nbsp;to&nbsp;it.&nbsp;<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowEditing<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowCancelingEdit<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowUpdating<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowDeleting<br>The&nbsp;following&nbsp;aspx&nbsp;source&nbsp;shows&nbsp;this.<br>Listing&nbsp;7<br><div class="code_main">&lt;asp:GridView&nbsp;ID=&quot;TableGridView&quot;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowEditing&nbsp;=&quot;TableGridView_RowEditing&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowCancelingEdit=&quot;TableGridView_RowCancelingEdit&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowUpdating=&quot;TableGridView_RowUpdating&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnRowDeleting=&quot;TableGridView_RowDeleting&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runat=&quot;server&quot;&nbsp;&nbsp;AutoGenerateColumns=&quot;False&quot;&nbsp;&gt;<br>&lt;/asp:GridView&gt;</div><br><br>The&nbsp;default.cs&nbsp;has&nbsp;method&nbsp;PopulateDataTable,&nbsp;CreateTemplatedGridView,&nbsp;GenerateUpdateQuery,&nbsp;GenerateDeleteQuery,&nbsp;GenerateUpdateQuery&nbsp;and&nbsp;the&nbsp;aforementioned&nbsp;event&nbsp;handlers.&nbsp;<br>Let&nbsp;us&nbsp;take&nbsp;a&nbsp;look&nbsp;at&nbsp;the&nbsp;most&nbsp;important&nbsp;method&nbsp;CreateTemplatedGridView.&nbsp;This&nbsp;method&nbsp;is&nbsp;responsible&nbsp;for&nbsp;initializing&nbsp;the&nbsp;object&nbsp;of&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;and&nbsp;creating&nbsp;the&nbsp;templated&nbsp;GirdView.&nbsp;Before&nbsp;going&nbsp;into&nbsp;detail&nbsp;of&nbsp;this&nbsp;method&nbsp;I&nbsp;want&nbsp;to&nbsp;mention&nbsp;the&nbsp;use&nbsp;of&nbsp;two&nbsp;global&nbsp;variables&nbsp;taken&nbsp;in&nbsp;_Default&nbsp;class<br>Public&nbsp;static&nbsp;DataTable&nbsp;Table-&nbsp;It&nbsp;stores&nbsp;the&nbsp;data&nbsp;source&nbsp;table&nbsp;that&nbsp;will&nbsp;be&nbsp;bound&nbsp;with&nbsp;the&nbsp;dynamically&nbsp;templated&nbsp;GridView.<br>ArrayList&nbsp;ParameterArray-&nbsp;It&nbsp;keeps&nbsp;the&nbsp;new&nbsp;field&nbsp;values&nbsp;while&nbsp;editing&nbsp;or&nbsp;inserting&nbsp;the&nbsp;fields&nbsp;of&nbsp;a&nbsp;particular&nbsp;row.&nbsp;It&nbsp;is&nbsp;to&nbsp;be&nbsp;used&nbsp;by&nbsp;the&nbsp;queries.<br>Defining&nbsp;CreateTemplatedGridView<br>This&nbsp;is&nbsp;an&nbsp;important&nbsp;method&nbsp;which&nbsp;shows&nbsp;how&nbsp;to&nbsp;use&nbsp;the&nbsp;class&nbsp;DynamicallyTemplatedGridViewHandler.&nbsp;It&nbsp;first&nbsp;invokes&nbsp;the&nbsp;PopulateDataTable&nbsp;method,&nbsp;initializes&nbsp;the&nbsp;Table&nbsp;data&nbsp;member&nbsp;and&nbsp;clears&nbsp;the&nbsp;column&nbsp;collection&nbsp;of&nbsp;the&nbsp;TableGridView&nbsp;to&nbsp;avoid&nbsp;repetitive&nbsp;addition&nbsp;of&nbsp;columns&nbsp;on&nbsp;post&nbsp;backs.&nbsp;It&nbsp;initializes&nbsp;ServerName,&nbsp;USerName,&nbsp;Password,&nbsp;DatabaseName&nbsp;and&nbsp;TableName&nbsp;with&nbsp;their&nbsp;corresponding&nbsp;Session&nbsp;variables.&nbsp;Using&nbsp;the&nbsp;information&nbsp;on&nbsp;the&nbsp;aforementioned&nbsp;variables,&nbsp;it&nbsp;generates&nbsp;a&nbsp;connection&nbsp;string&nbsp;and&nbsp;initializes&nbsp;the&nbsp;SqlConnection&nbsp;object&nbsp;&quot;Connection.&quot;&nbsp;The&nbsp;SQLDataAdapter&nbsp;object&nbsp;uses&nbsp;this&nbsp;connection&nbsp;object&nbsp;and&nbsp;select&nbsp;query&nbsp;for&nbsp;selecting&nbsp;all&nbsp;rows&nbsp;from&nbsp;the&nbsp;desired&nbsp;table&nbsp;and&nbsp;populate&nbsp;Table&nbsp;using&nbsp;the&nbsp;Fill&nbsp;method&nbsp;of&nbsp;SqlDataAdapter.&nbsp;The&nbsp;definition&nbsp;of&nbsp;PopulateDataTable&nbsp;is&nbsp;below.<br>Listing&nbsp;8<br><div class="code_main">void&nbsp;PopulateDataTable()<br>{<br>&nbsp;&nbsp;&nbsp;Table&nbsp;=&nbsp;new&nbsp;DataTable();<br>&nbsp;&nbsp;&nbsp;TableGridView.Columns.Clear();<br>&nbsp;&nbsp;&nbsp;string&nbsp;ServerName&nbsp;=&nbsp;(string)Session[&quot;Server&quot;];<br>&nbsp;&nbsp;&nbsp;string&nbsp;UserName&nbsp;=&nbsp;(string)Session[&quot;UserName&quot;];<br>&nbsp;&nbsp;&nbsp;string&nbsp;Password&nbsp;=&nbsp;(string)Session[&quot;Password&quot;];<br>&nbsp;&nbsp;&nbsp;string&nbsp;DatabaseName&nbsp;=&nbsp;(string)Session[&quot;DatabaseSelected&quot;];<br>&nbsp;&nbsp;&nbsp;string&nbsp;TableName&nbsp;=&nbsp;(string)Session[&quot;TableSelected&quot;];<br>&nbsp;&nbsp;&nbsp;SqlConnection&nbsp;Connection&nbsp;=&nbsp;new&nbsp;System.Data.SqlClient.SqlConnection(&quot;<br>&nbsp;&nbsp;&nbsp;Data&nbsp;Source=&quot;&nbsp;+&nbsp;ServerName&nbsp;+&nbsp;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Initial&nbsp;Catalog=&quot;&nbsp;+&nbsp;DatabaseName&nbsp;+&nbsp;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;ID=&quot;&nbsp;+&nbsp;UserName&nbsp;+&nbsp;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Password=&quot;&nbsp;+&nbsp;Password&nbsp;+&nbsp;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connect&nbsp;Timeout=120&quot;);<br>&nbsp;&nbsp;&nbsp;SqlDataAdapter&nbsp;adapter&nbsp;=&nbsp;new&nbsp;SqlDataAdapter(&quot;Select&nbsp;*&nbsp;from&nbsp;&quot;&nbsp;+&nbsp;TableName,&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Connection);<br>&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adapter.Fill(Table);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;catch&nbsp;(Exception&nbsp;ex)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg_lbl.Text&nbsp;=&nbsp;ex.ToString();<br>&nbsp;&nbsp;&nbsp;}<br>}</div><br>We&nbsp;have,&nbsp;so&nbsp;far,&nbsp;populated&nbsp;the&nbsp;data&nbsp;source&nbsp;which&nbsp;will&nbsp;be&nbsp;bound&nbsp;by&nbsp;the&nbsp;TableGridView&nbsp;through&nbsp;invoking&nbsp;PopulateDataTable&nbsp;in&nbsp;CreateTemplatedGridView.&nbsp;Now,&nbsp;coming&nbsp;to&nbsp;the&nbsp;definition&nbsp;of&nbsp;CreateTemplatedGridView,&nbsp;we&nbsp;have&nbsp;to&nbsp;template&nbsp;the&nbsp;GridView.&nbsp;It&nbsp;is&nbsp;important&nbsp;to&nbsp;know&nbsp;that&nbsp;a&nbsp;TemplateField&nbsp;object&nbsp;has&nbsp;the&nbsp;following&nbsp;template&nbsp;properties&nbsp;that&nbsp;should&nbsp;be&nbsp;set&nbsp;on&nbsp;need&nbsp;basis.<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HeaderTemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemTemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EditItemTemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FooterTemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertItemTemplate<br>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlternatingItemTemplate<br>We&nbsp;need&nbsp;only&nbsp;the&nbsp;first&nbsp;three&nbsp;template&nbsp;properties&nbsp;as&nbsp;we&nbsp;implemented&nbsp;the&nbsp;ITemplate&nbsp;for&nbsp;them&nbsp;only.&nbsp;&nbsp;<br>The&nbsp;first&nbsp;column&nbsp;of&nbsp;the&nbsp;TableGridView&nbsp;is&nbsp;basically&nbsp;command&nbsp;column.&nbsp;It&nbsp;only&nbsp;has&nbsp;buttons&nbsp;for&nbsp;different&nbsp;operations&nbsp;on&nbsp;a&nbsp;row,&nbsp;which&nbsp;is&nbsp;the&nbsp;same&nbsp;for&nbsp;every&nbsp;table&nbsp;bound&nbsp;to&nbsp;the&nbsp;TableGridView.&nbsp;Take&nbsp;the&nbsp;TemplateField&nbsp;object&nbsp;BtnTmpField&nbsp;and&nbsp;initialize&nbsp;it.&nbsp;Then&nbsp;set&nbsp;the&nbsp;template&nbsp;properties&nbsp;(HeaderTemplate,ItemTemplate&nbsp;and&nbsp;EditItemTemplate)&nbsp;as&nbsp;the&nbsp;following&nbsp;code&nbsp;shows.<br>Listing&nbsp;9&nbsp;&nbsp;&nbsp;<br><div class="code_main">void&nbsp;CreateTemplatedGridView()<br>{<br>&nbsp;&nbsp;&nbsp;//fill&nbsp;the&nbsp;table&nbsp;which&nbsp;is&nbsp;to&nbsp;be&nbsp;bound&nbsp;with&nbsp;the&nbsp;GridView<br>&nbsp;&nbsp;&nbsp;PopulateDataTable();<br>&nbsp;&nbsp;&nbsp;TemplateField&nbsp;BtnTmpField&nbsp;=&nbsp;new&nbsp;TemplateField();<br>&nbsp;&nbsp;&nbsp;BtnTmpField.ItemTemplate&nbsp;=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.Item,&nbsp;&quot;...&quot;,&nbsp;&quot;Command&quot;);<br>&nbsp;&nbsp;&nbsp;BtnTmpField.HeaderTemplate&nbsp;=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.Header,&nbsp;&quot;...&quot;,&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&quot;Command&quot;);<br>&nbsp;&nbsp;&nbsp;BtnTmpField.EditItemTemplate&nbsp;=<br>&nbsp;&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.EditItem,&nbsp;&quot;...&quot;,&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&quot;Command&quot;);<br>&nbsp;&nbsp;&nbsp;TableGridView.Columns.Add(BtnTmpField);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....</div><br>These&nbsp;three&nbsp;template&nbsp;properties&nbsp;are&nbsp;initialized&nbsp;using&nbsp;the&nbsp;constructor&nbsp;of&nbsp;the&nbsp;DynamicallyTemplatedGridViewHandler&nbsp;class,&nbsp;which&nbsp;sets&nbsp;the&nbsp;data&nbsp;members&nbsp;ItemType,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldName&nbsp;and&nbsp;InfoType&nbsp;with&nbsp;the&nbsp;arguments&nbsp;provided.&nbsp;You&nbsp;might&nbsp;have&nbsp;noted&nbsp;that&nbsp;I&nbsp;have&nbsp;given&nbsp;no&nbsp;title&nbsp;for&nbsp;this&nbsp;field&nbsp;(it&nbsp;is&nbsp;just&nbsp;&quot;&#39;…&quot;)&nbsp;and&nbsp;you&nbsp;may&nbsp;give&nbsp;a&nbsp;common&nbsp;title&nbsp;or&nbsp;whatever&nbsp;you&nbsp;want.&nbsp;I&nbsp;have&nbsp;set&nbsp;the&nbsp;InfoType&nbsp;with&nbsp;&quot;Command&quot;&nbsp;(that&nbsp;will&nbsp;be&nbsp;an&nbsp;indicator&nbsp;for&nbsp;the&nbsp;InstantiateIn&nbsp;method&nbsp;to&nbsp;inform&nbsp;it&nbsp;about&nbsp;the&nbsp;type&nbsp;of&nbsp;information&nbsp;the&nbsp;template&nbsp;field&nbsp;contains)&nbsp;which&nbsp;will&nbsp;definitely&nbsp;be&nbsp;instantiated&nbsp;in&nbsp;buttons&nbsp;i.e.&nbsp;Edit,&nbsp;Insert&nbsp;and&nbsp;Delete&nbsp;in&nbsp;normal&nbsp;mode&nbsp;while&nbsp;Save&nbsp;and&nbsp;Cancel&nbsp;in&nbsp;Edit&nbsp;mode.&nbsp;Finally,&nbsp;add&nbsp;BtnTemplateField&nbsp;in&nbsp;the&nbsp;column&nbsp;collection&nbsp;of&nbsp;the&nbsp;GridView&nbsp;as&nbsp;the&nbsp;last&nbsp;line&nbsp;of&nbsp;the&nbsp;code&nbsp;shows.&nbsp;Now,&nbsp;we&nbsp;are&nbsp;finished&nbsp;with&nbsp;the&nbsp;first&nbsp;field&nbsp;of&nbsp;the&nbsp;dynamically&nbsp;templated&nbsp;GridView&nbsp;which&nbsp;is&nbsp;common&nbsp;to&nbsp;any&nbsp;table&nbsp;being&nbsp;bound&nbsp;to&nbsp;the&nbsp;GridView.&nbsp;<br>Next,&nbsp;we&nbsp;have&nbsp;to&nbsp;traverse&nbsp;the&nbsp;table&nbsp;to&nbsp;get&nbsp;the&nbsp;name&nbsp;and&nbsp;type&nbsp;of&nbsp;each&nbsp;column&nbsp;(which&nbsp;we&nbsp;do&nbsp;not&nbsp;know&nbsp;in&nbsp;advance)&nbsp;so&nbsp;it&nbsp;is&nbsp;passed&nbsp;to&nbsp;the&nbsp;constructor&nbsp;(second&nbsp;and&nbsp;third&nbsp;arguments&nbsp;for&nbsp;column&nbsp;name&nbsp;and&nbsp;type&nbsp;respectively)&nbsp;for&nbsp;initializing&nbsp;the&nbsp;three&nbsp;template&nbsp;properties&nbsp;of&nbsp;each&nbsp;field.&nbsp;<br>Listing&nbsp;10<br><div class="code_main">....<br>&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;=&nbsp;new&nbsp;TemplateField();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;create&nbsp;the&nbsp;header<br>&nbsp;&nbsp;ItemTmpField.HeaderTemplate&nbsp;=&nbsp;<br>&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.Header,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].ColumnName,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].DataType.Name);<br>&nbsp;&nbsp;&nbsp;//&nbsp;create&nbsp;ItemTemplate<br>&nbsp;&nbsp;ItemTmpField.ItemTemplate&nbsp;=&nbsp;<br>&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.Item,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].ColumnName,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].DataType.Name);<br>&nbsp;&nbsp;&nbsp;//&nbsp;create&nbsp;EditItemTemplate<br>&nbsp;&nbsp;ItemTmpField.EditItemTemplate&nbsp;=&nbsp;<br>&nbsp;&nbsp;new&nbsp;DynamicallyTemplatedGridViewHandler(ListItemType.EditItem,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].ColumnName,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Table.Columns[i].DataType.Name);<br>&nbsp;&nbsp;&nbsp;//&nbsp;add&nbsp;to&nbsp;the&nbsp;GridView<br>&nbsp;&nbsp;TableGridView.Columns.Add(ItemTmpField);<br>&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;....</div><br>After&nbsp;initializing&nbsp;the&nbsp;Header,ItemTemplate&nbsp;and&nbsp;EditItemTemplate&nbsp;for&nbsp;a&nbsp;field,&nbsp;we&nbsp;have&nbsp;to&nbsp;add&nbsp;it&nbsp;to&nbsp;the&nbsp;column&nbsp;collection&nbsp;of&nbsp;the&nbsp;GridView.&nbsp;Now,&nbsp;all&nbsp;fields&nbsp;of&nbsp;the&nbsp;GridView&nbsp;have&nbsp;been&nbsp;templated&nbsp;successfully&nbsp;and&nbsp;we&nbsp;have&nbsp;to&nbsp;assign&nbsp;the&nbsp;Table&nbsp;to&nbsp;the&nbsp;GridView&#39;s&nbsp;DataSource&nbsp;property&nbsp;and&nbsp;bind&nbsp;it.&nbsp;Simply&nbsp;add&nbsp;the&nbsp;following&nbsp;two&nbsp;lines&nbsp;to&nbsp;the&nbsp;code.<br>Listing&nbsp;11<br><div class="code_main">&nbsp;&nbsp;....<br>&nbsp;TableGridView.DataSource&nbsp;=&nbsp;Table;<br>&nbsp;TableGridView.DataBind();<br>}</div><br>This&nbsp;finishes&nbsp;the&nbsp;definition&nbsp;of&nbsp;CreateTemplatedGridView&nbsp;and&nbsp;also&nbsp;completes&nbsp;the&nbsp;creation&nbsp;of&nbsp;the&nbsp;templated&nbsp;GridView&nbsp;dynamically.&nbsp;This&nbsp;method&nbsp;has&nbsp;been&nbsp;invoked&nbsp;in&nbsp;Page_Load&nbsp;only&nbsp;for&nbsp;post&nbsp;backs!&nbsp;This&nbsp;may&nbsp;seem&nbsp;a&nbsp;bit&nbsp;strange.&nbsp;Why&nbsp;is&nbsp;it&nbsp;done&nbsp;for&nbsp;all&nbsp;post&nbsp;backs&nbsp;and&nbsp;not&nbsp;just&nbsp;the&nbsp;first&nbsp;time?&nbsp;Actually,&nbsp;at&nbsp;each&nbsp;post&nbsp;back&nbsp;a&nbsp;dynamically&nbsp;templated&nbsp;GridView&nbsp;cannot&nbsp;be&nbsp;presented&nbsp;from&nbsp;ViewState&nbsp;so&nbsp;we&nbsp;have&nbsp;to&nbsp;create&nbsp;and&nbsp;bind&nbsp;it&nbsp;explicitly&nbsp;using&nbsp;this&nbsp;method&nbsp;on&nbsp;all&nbsp;post&nbsp;backs.&nbsp;<br><br><strong>Working&nbsp;with&nbsp;GridView&nbsp;Operations</strong><br><br>Now&nbsp;let&nbsp;us&nbsp;take&nbsp;a&nbsp;look&nbsp;at&nbsp;the&nbsp;three&nbsp;operations&nbsp;(Edit,&nbsp;Insert&nbsp;and&nbsp;Delete)&nbsp;and&nbsp;their&nbsp;corresponding&nbsp;event&nbsp;handlers&nbsp;one&nbsp;by&nbsp;one,&nbsp;which&nbsp;will&nbsp;help&nbsp;you&nbsp;better&nbsp;understand&nbsp;how&nbsp;this&nbsp;demo&nbsp;works.&nbsp;<br>How&nbsp;Edit&nbsp;Operation&nbsp;works<br>When&nbsp;a&nbsp;user&nbsp;clicks&nbsp;on&nbsp;the&nbsp;pencil&nbsp;image&nbsp;button&nbsp;used&nbsp;for&nbsp;editing,&nbsp;the&nbsp;GridView&nbsp;enters&nbsp;into&nbsp;Edit&nbsp;mode&nbsp;and&nbsp;the&nbsp;OnRowEditing&nbsp;event&nbsp;is&nbsp;fired&nbsp;that&nbsp;has&nbsp;been&nbsp;handled&nbsp;just&nbsp;to&nbsp;set&nbsp;the&nbsp;EditIndex&nbsp;of&nbsp;the&nbsp;GridView&nbsp;to&nbsp;new&nbsp;EditIndex&nbsp;explicitly,&nbsp;bind&nbsp;it&nbsp;and&nbsp;then&nbsp;save&nbsp;the&nbsp;NewEditIndex&nbsp;in&nbsp;session&nbsp;so&nbsp;that&nbsp;it&nbsp;can&nbsp;be&nbsp;used&nbsp;later&nbsp;when&nbsp;needed.&nbsp;<br>Listing&nbsp;12<br><div class="code_main">&nbsp;&nbsp;public&nbsp;void&nbsp;TableGridView_RowEditing(object&nbsp;sender,&nbsp;GridViewEditEventArgs&nbsp;e)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TableGridView.EditIndex&nbsp;=&nbsp;e.NewEditIndex;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TableGridView.DataBind();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session[&quot;SelecetdRowIndex&quot;]&nbsp;=&nbsp;e.NewEditIndex;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</div><br>&nbsp;<br>Figure&nbsp;2<br><img src="attachments/m&#111;nth_0812/2008123009024148557_1.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" />&nbsp;&nbsp;<br>&nbsp;<br>The&nbsp;figure&nbsp;above&nbsp;shows&nbsp;how&nbsp;it&nbsp;looks&nbsp;when&nbsp;the&nbsp;GridView&nbsp;enters&nbsp;into&nbsp;Edit&nbsp;mode.&nbsp;For&nbsp;every&nbsp;field,&nbsp;data&nbsp;bound&nbsp;textboxes&nbsp;are&nbsp;displayed.&nbsp;The&nbsp;row&nbsp;now&nbsp;contains&nbsp;two&nbsp;buttons,&nbsp;an&nbsp;Update&nbsp;(one&nbsp;with&nbsp;check&nbsp;image)&nbsp;and&nbsp;Cancel&nbsp;(one&nbsp;with&nbsp;cross&nbsp;image).&nbsp;When&nbsp;the&nbsp;user&nbsp;makes&nbsp;desired&nbsp;changes&nbsp;and&nbsp;clicks&nbsp;the&nbsp;update&nbsp;button,&nbsp;OnRowUpdating&nbsp;event&nbsp;is&nbsp;fired.&nbsp;First,&nbsp;we&nbsp;get&nbsp;all&nbsp;information&nbsp;needed&nbsp;to&nbsp;generate&nbsp;the&nbsp;connection&nbsp;string&nbsp;that&nbsp;includes&nbsp;the&nbsp;server&nbsp;name,&nbsp;user&nbsp;name,&nbsp;and&nbsp;password&nbsp;and&nbsp;database&nbsp;name&nbsp;that&nbsp;are&nbsp;gotten&nbsp;from&nbsp;their&nbsp;corresponding&nbsp;Session&nbsp;variable.&nbsp;&nbsp;Next,&nbsp;get&nbsp;the&nbsp;particular&nbsp;GridView&nbsp;row&nbsp;which&nbsp;is&nbsp;being&nbsp;edited&nbsp;so&nbsp;that&nbsp;the&nbsp;new&nbsp;values&nbsp;of&nbsp;all&nbsp;fields&nbsp;of&nbsp;that&nbsp;row&nbsp;could&nbsp;be&nbsp;added&nbsp;in&nbsp;ArrayList&nbsp;ParameterArray;&nbsp;one&nbsp;we&nbsp;have&nbsp;already&nbsp;taken&nbsp;for&nbsp;this&nbsp;purpose.&nbsp;<br>Listing&nbsp;13<br><div class="code_main">GridViewRow&nbsp;row&nbsp;=&nbsp;TableGridView.Rows[e.RowIndex];<br>for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;string&nbsp;field&nbsp;=&nbsp;((TextBox)row.FindControl(Table.Columns[i].ColumnName)).Text;<br>&nbsp;&nbsp;ParameterArray.Add(field);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>}</div><br>Later&nbsp;we&nbsp;need&nbsp;these&nbsp;field&nbsp;values&nbsp;from&nbsp;ParameterArray&nbsp;to&nbsp;generate&nbsp;Update&nbsp;and&nbsp;Insert&nbsp;Query&nbsp;accordingly.&nbsp;Since&nbsp;Insert&nbsp;Operation&nbsp;has&nbsp;been&nbsp;implemented&nbsp;through&nbsp;edit&nbsp;mode&nbsp;of&nbsp;the&nbsp;GridView,&nbsp;it&nbsp;definitely&nbsp;uses&nbsp;the&nbsp;OnRowUpdating&nbsp;event.&nbsp;So,&nbsp;here&nbsp;we&nbsp;have&nbsp;to&nbsp;check&nbsp;which&nbsp;operation&nbsp;is&nbsp;intended&nbsp;and&nbsp;whether&nbsp;the&nbsp;Insert&nbsp;or&nbsp;Edit&nbsp;button&nbsp;has&nbsp;been&nbsp;clicked.&nbsp;This&nbsp;check&nbsp;is&nbsp;made&nbsp;using&nbsp;the&nbsp;flag&nbsp;value&nbsp;from&nbsp;the&nbsp;Session&nbsp;variable&nbsp;Session[&quot;InsertFlag&quot;]&nbsp;as&nbsp;shown&nbsp;in&nbsp;the&nbsp;following&nbsp;&nbsp;part&nbsp;of&nbsp;OnRowUpdating.<br>Listing&nbsp;14<br><div class="code_main">....<br>string&nbsp;Query&nbsp;=&nbsp;&quot;&quot;;<br>if&nbsp;((int)Session[&quot;InsertFlag&quot;]&nbsp;==&nbsp;1)<br>&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;=&nbsp;GenerateInsertQuery();<br>else<br>&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;=&nbsp;GenerateUpdateQuery();<br>SqlCommand&nbsp;Command&nbsp;=&nbsp;new&nbsp;System.Data.SqlClient.SqlCommand(Query,&nbsp;Connection);<br>try<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;Connection.Open();<br>&nbsp;&nbsp;&nbsp;&nbsp;Command.ExecuteNonQuery();<br>&nbsp;&nbsp;&nbsp;&nbsp;Session[&quot;InsertFlag&quot;]&nbsp;=&nbsp;(int)Session[&quot;InsertFlag&quot;]&nbsp;==&nbsp;1&nbsp;?&nbsp;0&nbsp;:&nbsp;1;<br>}<br>catch&nbsp;(SqlException&nbsp;se)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;msg_button.Visible&nbsp;=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;msg_lbl.Text&nbsp;=&nbsp;se.ToString();<br>}<br>TableGridView.EditIndex&nbsp;=&nbsp;-1;<br>CreateTemplatedGridView();&nbsp;&nbsp;&nbsp;&nbsp;</div><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>After&nbsp;the&nbsp;command&nbsp;runs&nbsp;successfully,&nbsp;Session[InserFlag]&nbsp;is&nbsp;reset.&nbsp;You&nbsp;may&nbsp;have&nbsp;noticed&nbsp;that&nbsp;I&nbsp;have&nbsp;cancelled&nbsp;the&nbsp;GridView&#39;s&nbsp;Edit&nbsp;mode&nbsp;by&nbsp;setting&nbsp;its&nbsp;Edit&nbsp;Index&nbsp;equal&nbsp;to&nbsp;-1&nbsp;which&nbsp;brings&nbsp;the&nbsp;GridView&nbsp;back&nbsp;to&nbsp;the&nbsp;normal&nbsp;mode&nbsp;so&nbsp;that&nbsp;the&nbsp;changes&nbsp;could&nbsp;be&nbsp;viewable.&nbsp;We&nbsp;have&nbsp;to&nbsp;call&nbsp;CreateTemplatedGridView&nbsp;after&nbsp;any&nbsp;manipulation&nbsp;on&nbsp;table&nbsp;through&nbsp;the&nbsp;GridView&nbsp;as&nbsp;we&nbsp;again&nbsp;want&nbsp;the&nbsp;templated&nbsp;GridView&nbsp;to&nbsp;be&nbsp;created&nbsp;with&nbsp;updated&nbsp;information.&nbsp;Simply&nbsp;setting&nbsp;the&nbsp;DataSource&nbsp;of&nbsp;the&nbsp;GridView&nbsp;and&nbsp;calling&nbsp;DataBind&nbsp;method&nbsp;cannot&nbsp;work&nbsp;in&nbsp;this&nbsp;scenario.&nbsp;<br>It&nbsp;is&nbsp;important&nbsp;to&nbsp;know&nbsp;how&nbsp;the&nbsp;cancel&nbsp;button&nbsp;works.&nbsp;When&nbsp;clicked,&nbsp;the&nbsp;event&nbsp;TableGridView_RowCancelingEdit&nbsp;gets&nbsp;fired&nbsp;which&nbsp;sets&nbsp;the&nbsp;EditIndex&nbsp;to&nbsp;-1,&nbsp;binds&nbsp;the&nbsp;GridView&nbsp;and&nbsp;resets&nbsp;the&nbsp;index&nbsp;of&nbsp;the&nbsp;selected&nbsp;row&nbsp;in&nbsp;the&nbsp;session&nbsp;variable&nbsp;as&nbsp;shown&nbsp;below.<br>Listing&nbsp;15<br><div class="code_main">public&nbsp;void&nbsp;TableGridView_RowCancelingEdit(object&nbsp;sender,&nbsp;GridViewCancelEditEventArgs&nbsp;e)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;TableGridView.EditIndex&nbsp;=&nbsp;-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;TableGridView.DataBind();<br>&nbsp;&nbsp;&nbsp;&nbsp;Session[&quot;SelecetdRowIndex&quot;]&nbsp;=&nbsp;-1;<br>&nbsp;&nbsp;&nbsp;<br>}</div><br><br><strong>How&nbsp;Insert&nbsp;Operation&nbsp;works</strong><br>When&nbsp;the&nbsp;Insert&nbsp;button&nbsp;is&nbsp;clicked,&nbsp;the&nbsp;GridView&nbsp;enters&nbsp;into&nbsp;Edit&nbsp;mode.&nbsp;However,&nbsp;this&nbsp;time&nbsp;it&nbsp;has&nbsp;empty&nbsp;text&nbsp;boxes&nbsp;for&nbsp;all&nbsp;corresponding&nbsp;fields.&nbsp;It&nbsp;has&nbsp;been&nbsp;shown&nbsp;in&nbsp;the&nbsp;definition&nbsp;of&nbsp;InstantiateIn.&nbsp;None&nbsp;of&nbsp;the&nbsp;event&nbsp;handlers&nbsp;specific&nbsp;to&nbsp;insert&nbsp;operation&nbsp;solely&nbsp;have&nbsp;been&nbsp;implemented!&nbsp;It&nbsp;is&nbsp;just&nbsp;the&nbsp;utilization&nbsp;of&nbsp;the&nbsp;event&nbsp;handlers&nbsp;for&nbsp;edit&nbsp;operation,&nbsp;but&nbsp;with&nbsp;common&nbsp;sense,&nbsp;which,&nbsp;as&nbsp;elders&nbsp;say,&nbsp;is&nbsp;not&nbsp;common!&nbsp;There&nbsp;is&nbsp;another&nbsp;point&nbsp;to&nbsp;be&nbsp;noted&nbsp;here,&nbsp;it&nbsp;may&nbsp;be&nbsp;a&nbsp;small&nbsp;drawback,&nbsp;but&nbsp;it&nbsp;is&nbsp;negligible;&nbsp;the&nbsp;row&nbsp;for&nbsp;insertion&nbsp;replaces&nbsp;the&nbsp;exiting&nbsp;row&nbsp;just&nbsp;visually&nbsp;and&nbsp;after&nbsp;insertion&nbsp;it&nbsp;reappears&nbsp;along&nbsp;with&nbsp;the&nbsp;newly&nbsp;inserted&nbsp;one.<br>Figure&nbsp;3<br>&nbsp;&nbsp;<br><img src="attachments/m&#111;nth_0812/2008123009024148557_2.jpg" border="0" onload="javascript:DrawImage(this);"  alt="按此在新窗口打开图片" onmouseover="this.style.cursor='hand';" onclick="window.open(this.src);" /><br><br><strong>How&nbsp;Delete&nbsp;Operation&nbsp;works</strong><br>When&nbsp;the&nbsp;Delete&nbsp;button&nbsp;is&nbsp;clicked&nbsp;a&nbsp;confirmation&nbsp;dialogue&nbsp;box&nbsp;appears&nbsp;(one&nbsp;also&nbsp;added&nbsp;for&nbsp;Update&nbsp;button).&nbsp;It&nbsp;is&nbsp;a&nbsp;small&nbsp;piece&nbsp;of&nbsp;JavaScript&nbsp;code&nbsp;added&nbsp;in&nbsp;the&nbsp;button&#39;s&nbsp;OnClientClick&nbsp;event.&nbsp;When&nbsp;user&nbsp;select&nbsp;&quot;Ok&quot;&nbsp;the&nbsp;OnRowDeleting&nbsp;event&nbsp;gets&nbsp;fired&nbsp;and&nbsp;the&nbsp;delete&nbsp;query&nbsp;runs&nbsp;for&nbsp;that&nbsp;particular&nbsp;row.&nbsp;<br>Listing&nbsp;16<br><div class="code_main">&nbsp;....<br>&nbsp;string&nbsp;Query&nbsp;=&nbsp;GenerateDeleteQuery(e.RowIndex);<br>&nbsp;SqlCommand&nbsp;Command&nbsp;=&nbsp;new&nbsp;System.Data.SqlClient.SqlCommand(Query,&nbsp;Connection);<br>&nbsp;try<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(Connection.State==ConnectionState.Closed)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection.Open();<br>&nbsp;&nbsp;&nbsp;&nbsp;Command.ExecuteNonQuery();<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;catch&nbsp;(SqlException&nbsp;se)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;msg_button.Visible&nbsp;=&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;msg_lbl.Text&nbsp;=&nbsp;se.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;Connection.Close();<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;CreateTemplatedGridView();&nbsp;<br>&nbsp;</div><br>First,&nbsp;the&nbsp;delete&nbsp;query&nbsp;is&nbsp;generated&nbsp;by&nbsp;invoking&nbsp;the&nbsp;GenerateDeleteQuery&nbsp;method&nbsp;which&nbsp;takes&nbsp;the&nbsp;index&nbsp;of&nbsp;the&nbsp;row&nbsp;to&nbsp;be&nbsp;deleted&nbsp;as&nbsp;parameter.&nbsp;This&nbsp;index&nbsp;is&nbsp;used&nbsp;to&nbsp;find&nbsp;the&nbsp;particular&nbsp;row&#39;s&nbsp;first&nbsp;field&nbsp;(being&nbsp;assumed&nbsp;that&nbsp;the&nbsp;Primary&nbsp;Key&nbsp;lies&nbsp;in&nbsp;first&nbsp;column)&nbsp;for&nbsp;the&nbsp;parameter&nbsp;in&nbsp;WHERE&nbsp;clause&nbsp;for&nbsp;delete&nbsp;query.&nbsp;GenerateDeleteQuery&nbsp;uses&nbsp;this&nbsp;index&nbsp;as&nbsp;shown&nbsp;below.<br>&nbsp;<br>Listing&nbsp;17<br><div class="code_main">string&nbsp;query&nbsp;=&nbsp;&quot;&quot;;<br>if&nbsp;(Table.Columns[0].DataType.Name&nbsp;==&nbsp;&quot;String&quot;&nbsp;||&nbsp;Table.Columns[0].DataType.Name&nbsp;==&nbsp;&quot;DateTime&quot;)<br>&nbsp;&nbsp;&nbsp;query&nbsp;=&nbsp;&quot;Delete&nbsp;from&nbsp;&quot;&nbsp;+&nbsp;TableName&nbsp;+&nbsp;&quot;&nbsp;where&nbsp;&quot;&nbsp;+&nbsp;Table.Columns[0].ColumnName&nbsp;+<br>&nbsp;&nbsp;&nbsp;&quot;=&#39;&quot;&nbsp;+&nbsp;class=Bold&gt;Table.Rows[index][0].ToString()&nbsp;+&nbsp;&quot;&#39;&quot;;</div><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>Again,&nbsp;after&nbsp;any&nbsp;manipulation&nbsp;on&nbsp;the&nbsp;database&nbsp;through&nbsp;GridView,&nbsp;we&nbsp;need&nbsp;to&nbsp;call&nbsp;CreateTemplatedGridView.&nbsp;We&nbsp;also&nbsp;have&nbsp;to&nbsp;do&nbsp;this&nbsp;after&nbsp;the&nbsp;deletion&nbsp;completes&nbsp;successfully.<br><br><strong>Downloads</strong><br><br>[<a target="_blank" href="http://authors.aspalliance.com/GMohyuddin/Dynamically%20Templated%20GridView%20with%20Edit-Insert-Delete%20Options.zip">Download&nbsp;Sample</a>]<br><br><strong>Conclusion</strong><br><br>Creating&nbsp;a&nbsp;dynamically&nbsp;templated&nbsp;GridView&nbsp;loaded&nbsp;with&nbsp;in-place&nbsp;functionalities&nbsp;of&nbsp;edit,&nbsp;delete&nbsp;and&nbsp;insert&nbsp;is&nbsp;a&nbsp;great&nbsp;use&nbsp;in&nbsp;many&nbsp;situations.&nbsp;You&nbsp;may&nbsp;need&nbsp;it&nbsp;when&nbsp;you&nbsp;have&nbsp;no&nbsp;knowledge&nbsp;in&nbsp;advance&nbsp;of&nbsp;the&nbsp;structure&nbsp;of&nbsp;the&nbsp;table&nbsp;and&nbsp;you&nbsp;not&nbsp;only&nbsp;want&nbsp;to&nbsp;bind&nbsp;it&nbsp;with&nbsp;GridView,&nbsp;but&nbsp;also&nbsp;want&nbsp;to&nbsp;manipulate&nbsp;the&nbsp;table&nbsp;through&nbsp;GridView.&nbsp;<br>I&nbsp;have&nbsp;tried&nbsp;to&nbsp;explain&nbsp;everything&nbsp;that&nbsp;is&nbsp;important&nbsp;to&nbsp;understand&nbsp;concerning&nbsp;the&nbsp;entire&nbsp;working,&nbsp;yet&nbsp;there&nbsp;are&nbsp;some&nbsp;trivial&nbsp;details&nbsp;which&nbsp;I&nbsp;have&nbsp;not&nbsp;given&nbsp;just&nbsp;to&nbsp;make&nbsp;the&nbsp;article&nbsp;as&nbsp;concise&nbsp;as&nbsp;possible.&nbsp;There&nbsp;is&nbsp;one&nbsp;area&nbsp;which&nbsp;I&nbsp;thought&nbsp;trivial&nbsp;to&nbsp;explain,&nbsp;the&nbsp;query&nbsp;generation&nbsp;methods.&nbsp;You&nbsp;may&nbsp;check&nbsp;the&nbsp;code&nbsp;detail&nbsp;and&nbsp;working&nbsp;of&nbsp;these&nbsp;methods.&nbsp;<br>Please&nbsp;note&nbsp;that&nbsp;the&nbsp;code&nbsp;assumes&nbsp;that&nbsp;the&nbsp;primary&nbsp;key&nbsp;of&nbsp;the&nbsp;table&nbsp;bound&nbsp;with&nbsp;GridView&nbsp;is&nbsp;in&nbsp;its&nbsp;first&nbsp;column(Table.Columns[0]).&nbsp;Actually&nbsp;it&nbsp;has&nbsp;been&nbsp;left&nbsp;upto&nbsp;user&nbsp;to&nbsp;decide&nbsp;which&nbsp;column&nbsp;of&nbsp;the&nbsp;table;&nbsp;he&nbsp;decides&nbsp;to&nbsp;be&nbsp;the&nbsp;primary&nbsp;key&nbsp;field.&nbsp;I&nbsp;have&nbsp;not&nbsp;disabled&nbsp;it&nbsp;for&nbsp;it&nbsp;will&nbsp;no&nbsp;longer&nbsp;be&nbsp;editable&nbsp;even&nbsp;if&nbsp;first&nbsp;column&nbsp;is&nbsp;not&nbsp;primary&nbsp;key&nbsp;field.&nbsp;You&nbsp;may&nbsp;change&nbsp;it&nbsp;accordingly&nbsp;or&nbsp;may&nbsp;add&nbsp;small&nbsp;code&nbsp;to&nbsp;check&nbsp;for&nbsp;primary&nbsp;key&nbsp;dynamically&nbsp;and&nbsp;disable&nbsp;it.<br>Happy&nbsp;GridViewing!]]></description></item><item><link>http://www.517sou.net/blogview.asp?logID=1457</link><title>SCHTASKS命令详解</title><author>flyinweb</author><category>服务器专栏</category><pubDate>2008-12-29 15:31:09</pubDate><guid>http://www.517sou.net/blogview.asp?logID=1457</guid><description><![CDATA[<div class="code_main">SCHTASKS&nbsp;/parameter&nbsp;[arguments]&nbsp;<br><br>描述:<br>&nbsp;&nbsp;&nbsp;&nbsp;允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任<br>&nbsp;&nbsp;&nbsp;&nbsp;务。替代&nbsp;AT.exe。<br><br>参数列表:<br>&nbsp;&nbsp;&nbsp;&nbsp;/Create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建新计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/Delete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;删除计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示所有计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/Change&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更改计划任务属性。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/Run&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;立即运行计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中止当前正在运行的计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示帮助消息。<br><br>示例:<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Run&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/End&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Create&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Delete&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Query&nbsp;&nbsp;/?<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Change&nbsp;/?<br><br>SCHTASKS&nbsp;/Run&nbsp;[/S&nbsp;system&nbsp;[/U&nbsp;username&nbsp;[/P&nbsp;[password]]]]&nbsp;/TN&nbsp;taskname<br><br>描述:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;立即运行计划任务。<br><br>参数列表:<br>&nbsp;&nbsp;&nbsp;&nbsp;/S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要连接到的远程系统。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要执行命令的用户上下文。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[password]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定给定用户上下文密码。如果省略<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;则提示输入。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/TN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标识现在要运行的计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示该帮助消息。<br><br>示例:<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Run&nbsp;/?&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Run&nbsp;/TN&nbsp;&quot;Start&nbsp;Backup&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/Run&nbsp;/S&nbsp;system&nbsp;/U&nbsp;user&nbsp;/P&nbsp;password&nbsp;/TN&nbsp;&quot;Backup&nbsp;and&nbsp;Restore&quot;<br><br>SCHTASKS&nbsp;/End&nbsp;[/S&nbsp;system&nbsp;[/U&nbsp;username&nbsp;[/P&nbsp;[password]]]]&nbsp;/TN&nbsp;taskname<br><br>描述:<br>&nbsp;&nbsp;&nbsp;&nbsp;停止正在运行的计划任务。<br><br>参数列表:<br>&nbsp;&nbsp;&nbsp;&nbsp;/S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要连接到的远程系统。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要执行命令的用户上下文。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[password]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定给定用户上下文的密码。如果省略则<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提示输入。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/TN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要终止的计划任务。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显示该帮助消息。<br><br>示例:<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/End&nbsp;/?&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/End&nbsp;/TN&nbsp;&quot;Start&nbsp;Backup&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;SCHTASKS&nbsp;/End&nbsp;/S&nbsp;system&nbsp;/U&nbsp;user&nbsp;/P&nbsp;password&nbsp;/TN&nbsp;&quot;Backup&nbsp;and&nbsp;Restore&quot;<br><br>SCHTASKS&nbsp;/Create&nbsp;[/S&nbsp;system&nbsp;[/U&nbsp;username&nbsp;[/P&nbsp;[password]]]]<br>&nbsp;&nbsp;&nbsp;&nbsp;[/RU&nbsp;username&nbsp;[/RP&nbsp;password]]&nbsp;/SC&nbsp;schedule&nbsp;[/MO&nbsp;modifier]&nbsp;[/D&nbsp;day]<br>&nbsp;&nbsp;&nbsp;&nbsp;[/M&nbsp;months]&nbsp;[/I&nbsp;idletime]&nbsp;/TN&nbsp;taskname&nbsp;/TR&nbsp;taskrun&nbsp;[/ST&nbsp;starttime]<br>&nbsp;&nbsp;&nbsp;&nbsp;[/RI&nbsp;interval]&nbsp;[&nbsp;{/ET&nbsp;endtime&nbsp;|&nbsp;/DU&nbsp;duration}&nbsp;[/K]&nbsp;]&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;[/SD&nbsp;startdate]&nbsp;[/ED&nbsp;enddate]&nbsp;[/IT]&nbsp;[/Z]&nbsp;[/F]<br><br>描述:<br>&nbsp;&nbsp;&nbsp;&nbsp;允许管理员在本地或远程系统上创建计划任务。<br><br>参数列表:<br>&nbsp;&nbsp;&nbsp;&nbsp;/S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定要连接到的远程系统。如果省略这个<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;系统参数，默认是本地系统。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定命令执行的用户上下文。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/P&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[password]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定给定用户上下文的密码。如果省略则<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提示输入。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/RU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定任务在其下运行的“运行方式”用户<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;帐户(用户上下文)。对于系统帐户，有效&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;值是&nbsp;&quot;&quot;、&quot;NT&nbsp;AUTHORITY\SYSTEM&quot;&nbsp;或&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;SYSTEM&quot;。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/RP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[password]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定“运行方式”用户的密码。要提示输<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;入密码，值必须是&nbsp;&quot;*&quot;&nbsp;或无。系统帐户<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会忽略该密码。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/SC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;schedule&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定计划频率。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有效计划任务:&nbsp;MINUTE,&nbsp;HOURLY,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAILY,&nbsp;WEEKLY,&nbsp;MONTHLY,&nbsp;ONCE,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ONSTART,&nbsp;ONLOGON,&nbsp;ONIDLE.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/MO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modifier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;改进计划类型以允许更好地控制计划重复<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;周期。有效值列于下面“修改者”部分中。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;days&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定该周内运行任务的日期。有效值:&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MON,&nbsp;TUE,WED,&nbsp;THU,&nbsp;FRI,&nbsp;SAT,&nbsp;SUN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和对&nbsp;MONTHLY&nbsp;计划的&nbsp;1&nbsp;-&nbsp;31<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(某月中的日期)。通配符“*”指定所有<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日期。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/M&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;months&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定一年内的某月。默认是该月的第一天。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有效值:&nbsp;JAN,&nbsp;FEB,&nbsp;MAR,&nbsp;APR,&nbsp;MAY,&nbsp;JUN,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JUL,&nbsp;AUG,&nbsp;SEP,&nbsp;OCT,&nbsp;NOV,&nbsp;DEC。通配符<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;“*”&nbsp;指定所有的月。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;idletime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定运行一个已计划的&nbsp;ONIDLE&nbsp;任务之前<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要等待的空闲时间。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有效值范围:&nbsp;1&nbsp;到&nbsp;999&nbsp;分钟。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/TN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定唯一识别这个计划任务的名称。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/TR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;taskrun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定在这个计划时间运行的程序的路径<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和文件名。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如:&nbsp;C:\windows\system32\calc.exe<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/ST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starttime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指定运行这个任务的开始时间。时间格式&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是&nbsp;HH:mm&nbsp;(24&nbsp;小时时间)&nbsp;例如&nbsp;14:30&nbsp;为&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2:30&nbsp;PM。默认到当前时间。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;/RI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用分钟指定重复间隔。这无法应用于<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;已计划的类型:&nbsp;MINUTE,&nbsp;HOURLY,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ONSTART,&nbsp;ONLOGON,&nbsp;ONIDLE。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有效范围:&nbsp;1&nbsp;-&nbsp;599940&nbsp;分钟。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb