用ASP创建多栏选项列表

发表于:2007-06-30来源:作者:点击数: 标签:
首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意在一开始就看到就结局的人就应该在这里先走开一下。 这个综合体的第一部分是定宽字体的使用。Internet Exp
     首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意在一开始就看到就结局的人就应该在这里先走开一下。    这个综合体的第一部分是定宽字体的使用。Internet Explorer 和Netscape的两种标准定宽字体分别是 Courier New和Lucida Console。大部分的网页设计都不是完全使用标准字体,但它们是这个特定技术 工作的必要条件,正象上面两个画面所显示的,它们看起来不错。
  
     进一步解释,定宽字体就是一种字体,对这种字体的所有字符来说每个字符所占据的空间都是相同的。所以你可能想要采取一定的步骤以确保,这些定宽字体中的某一个或另一个已经安装在组成你的目标观众的客户机上。如果要用你的浏览器看看目前这些字体是否已经安装,在IE5中到Tools | Internet Options下,在Internet Options窗口的General 标签上点击 Fonts 按钮。你就会看到一个名为 Plain Text Font的区:
  
     这就是当前安装的全部定宽字体的列表。对于Netscape 4 和更高版本,到Edit | Preferences ,在 tree-view中展开 Appearance并选择 Fonts。在那有一个Fixed Width Fonts的下拉列表。
  
     第二部分是将某个特定的字体申请到选项列表中的能力。在IE4及以上版本中,可以用以下方式申请一个字体:
  
     < SELECT name="mySelect" style=FONT-FAMILY: Lucida Console, Courier New; >
  
     对Netscape,你可以围绕选项列表使用Font标记:
  
     < FONT FACE="Lucida Console, Courier New" >< /FONT >
  
     第三部分就是无间断空间&nbsp和管道字符的使用。
  
     在下一部分我将演示一个简单的完全编码的多选项列表的例子。最后一部分将演示在上下文使用数据库调用的多选项列表函数,并将探索一些可能的参数选择。
  
  基本的多栏选项列表
  
     以下的HTML例子示范多栏选项列表的最基本形式:
  
  < HTML >
  < HEAD >
  < TITLE >Simple Multi-Column Select List< /TITLE >
  < /HEAD >
  
  < BODY >
  < FORM >
  < FONT FACE="Lucida Console, Courier New" >
  < SELECT name="sel1" size=3 style="HEIGHT:65 px; WIDTH:350px;
  FONT-FAMILY: Lucida Console, Courier New; FONT-SIZE: x-small;" >
  < OPTION VALUE="1" >
  John |Chips |
  Intel |Hillsboro
  < OPTION VALUE="2" >
  Sue |Wotz |
  Microsoft |Redmond
  < OPTION VALUE="3" >
  Nathan |Babb |
  Eprise |Framingham
  < /SELECT >
  < /FONT >
  < /FORM >
  < /BODY >
  < /HTML >
  
     列表选项包含FirstName、 LastName、 Company 和 City。为了正确地安排第一栏的格式,我们必须发现字节数最多的名字'Nathan',然后为全部7个字符增加一个无间断空间。然后我们给John和Sue增加适当数量的空格,使它成为7个字符,在结尾增加管道符号,现在我们就有了一个格式化了的栏。
  
     要注意我们在以上代码中增加了< FONT > 标记。这是为了在Netscape上使用考虑,因为Netscape不象 IE能够识别字体属性。还要注意< FORM > 标记的出现。这也是Netscape 的要求。IE允许你绘制表单域、 选项列表等,不用将它们放在< FORM > 标记中,而在Netscape ,如果想要提取表单控制的话,就要求 表单的标记。
  
     使用这种方法有明显的缺陷。比如说,不容易向列表中增加一个记录,尤其是当它的大小与编码确定的空间不适合的时候。另外,这种类型的列表难以维护,尤其是当你不是创建编码的那个人的时候。 在下一部分我将向你演示如何用代码动态创建一个多栏选项列表。
  
     我所执行的多栏选项列表是一个叫做aspOptionListMulti()的函数。如果你想跳过解释直接进入代码部分,可以在文章结尾处找到供下载的函数。下载的函数包含以下几个文件:
  
  simpleSelect.htm
  multicolumnlist.mdb
  example.asp
  connect.inc
  aspFunction.asp
     simpleSelect.htm 是前面第一个例子的代码。我的动态例子使用的数据库是Aclearcase/" target="_blank" >ccess ,其数据源是 multicolumnlist.mdb 。通过运行example.asp 脚本就可以看到这个动态例子实际执行情况。这个文件中包含connect.inc 以建立与数据库的连接,aspFunction.asp 进行对aspOptionListMulti() 的函数调用。
  
     如下表中所列的,我的多栏列表函数有10个参数。我不想在aspOptionListMulti()的数据恢复方面多花时间。在接下来的讨论中,假设存在某种类型的数据源,你将在函数中处理返回的行。在这个例子中,我假设我所存储的程序没有参数。我也不再深入解释这个函数是如何调用的。如果你想知道函数是如何被调用的,可以在下载处参考例子。
  
  proc - 生成存储的程序名
  parmname - 用于sp调用的可选参数名 (可传递单个值或数组)
  parmval - 用于sp调用的可选参数值 (可传递单个值或数组)
  val - 选项列表的值栏
  selval - 如果是空字符串就不选择。如果它在选项列表中,就作为所选择的值被传递。
  column -在选项列表中代表栏的一个数组。
  maxcollen - 一个栏的最大可能长度。 -1 就关闭。可以是单个值,对于多栏就是数组。
  name - 选项列表的名字。
  firstopt - 确定第一个选项是否为空。如果是"|*" 那么就无选项。如果传递了一个值,那么它就是 第一个选项的值(推荐使用0或1)。
  style - 字体必须是固定长度(Courier New 或 Lucida Console)。其它字体的参数选择也可以传递。
  optattr - 你可能想要包含在选项列表(如函数调用、属性等)中的供选择的属性(完全引用)。
  size -1是普通,2或更多是多选(行)。
  以下代码是函数声明及它的其它参数。
  
     Function aspOptionListMulti(proc, parmname, parmval, val, selval, column, maxcollen, name, firstopt, style, optattr, size)
  
     On Error Resume Next
  
     对于我们这个特定情况,你可能想要在函数的最开头包含一个On Error Resume Next 语句。把这个语句放在代码中允许代码在发生错误的情况下继续执行(也许在返回的记录集中,代码在某一行中遇到了一个意外的值)。代码中有这个语句,你还可以建立选项列表的内容。缺点是在发生错误的情况,你的应用程序用户将不能直接向你报告错误,也许这个错误会导致下一个错误,使你的调试工作更加困难。
  
     代码的下一个重要部分是浏览器类型的简单测试。当我们最后建立选项列表时,我们需要区分开IE 和 Netscape ,因为两者在指定字体和型号时对选项列表的处理是不同的。为了简单起见,我将不深入到有关浏览器兼容性的代码,因为我还想集中在代码的关键概念上。如果你想知道更多有关兼容性的 问题,你可以参考本文结尾处提供的代码。
  
  
  
  

原文转自:http://www.ltesting.net