在ASP中使用智岛网格控件全过程

原创 2003年12月29日 17:29:00
在ASP中使用智岛网格控件全过程
 


    智岛网格控件作为数据的表示层,可以非常方便的进行货币样式、人民币大小写、中文大小写、各种逻辑样式、百分比样式、千分位分割等样式设置;可以冻结、锁定行列、对输入数据进行验证;可对字段设置公式,方便快捷地统计、汇总数据。智岛网格控件以其丰富多样的表现形式、简单易用的操作赢得了广大软件开发人员的一致好评。下面和大家分享一下智岛网格控件在ASP中的应用心得:

图1 样式设置

图2 图片管理

图3 多层标题

图4 汇总模式

图5 冻结锁定

图6 合并模式



一、注册智岛网格控件

下载智岛网格控件(其文件名为OGrid.ocx)后,按照如下方法注册控件:

点击“开始”→“运行”;在运行对话框中输入以下命令:
regsvr32 < OGrid.ocx文件的绝对路径>  注册智岛网格控件控件
regsvr32 /u < OGrid.ocx文件的绝对路径> 解除智岛网格控件的注册

二、在页面中添加智岛网格控件

在页面中加入以下代码,即可插入智岛网格控件:

<object classid="clsid:79B00E6B-6110-46AE-891C-97773022C958" width="0" height="0" id="OGrid" CODEBASE="http://www.oapro.com/ostarocx/download/OGrid.ocx"></object>

其中:
width和height:指控件的显示宽度和高度;
id:指控件对象的名称,通过该名称实现对控件的操作;
CODEBASE:指没有安装智岛网格控件的客户端运行该页面时自动下载安装该控件的刂贰?lt;/P>

三、用智岛网格控件表现XML格式数据

1. XML文档格式

智岛网格控件采用XML文档作为数据存储交换格式,下面是一份XML文档格式:

<?xml version="1.0" encoding="GB2312"?>
<Table>
   <TableInfo><!--表信息-->
      <TableName>人事表</TableName><!--数据表名称-->
      <FieldInfoArray>
         <FieldInfo><!--记录字段信息的XML-->
            <FieldName>姓名</FieldName><!--字段名称-->
            <DataType>10</DataType><!--字段数据类型3:逻辑型7:数值型10:字符型12:备注型23:日期型-->
            <CellType>0</CellType><!--表元类型0:文本框,1:组合框,2:检验框,3:日期时间,7:人民币小写栏金额控件-->
         </FieldInfo> 
         ...
     </FieldInfoArray>
   </TableInfo>

   <Rows><!--多行数据-->
     <Row><!--单行数据-->
       <name>张三</name>
       <sex>男</sex>
       ...
     </Row>
     ...
   </Rows>
</Table>

2. 代码实现

通过以下语句通知智岛网格控件打开XML文档:

OGrid.OpenTableXML("")

其中引号内XML文档的绝对路径,例如:
http://www.oapro.com/ostarocx/sample/OGrid/xml/样式设置.xml
或者
C:/样式设置.xml

四、用智岛网格控件表现来自于数据库的数据

1. XML文档格式

智岛网格控件采用XML文档作为交换格式,但更多的数据源是数据库,如何表现来自于数据库的数据呢?我们可以将数据库的数据动态转为XML格式。以下代码实现了将一ACCESS数据库中指定数据表的内容转为XML文档格式。您可将代码中db.mdb文件换成您自己的数据库名称。指定的数据表名称来自于传递到该文件的参数值:Table_name。

<%
dim sql,rs
dim Table_name
<!--取得数据表名称-->
Table_name=request.QueryString("Table_name")
Set rs= Server.CreateObject("ADODB.Recordset") 
Const adSchemaTables = 20
adSchemaColumns = 4
strConn="DBQ="+server.mappath("db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.open strConn
Set rstSchema = oConn.OpenSchema(adSchemaColumns)
Set rsttable = oConn.OpenSchema(adSchemaTables)
i=0
%><?xml version="1.0" encoding="gb2312"?>
<Table>
<TableInfo>
<TableName><%=Table_name%></TableName>
<FieldInfoArray>
<%
//生成XML文件头
Do Until rstSchema.EOF
if rstSchema("Table_name") = Table_name then
if rstschema("column_Name")<>"ORowInfo" or rstschema("column_Name")<>"osysMachineID" then
%> <FieldInfo>
<FieldName><%=rstschema("column_Name")%></FieldName> <ColName><%=rstschema("column_Name")%></ColName>
<%select case rstschema("data_type")
case "130"
if rstschema("CHARACTER_MAXIMUM_LENGTH") = 1073741823 then%> <DataType>12</DataType>
<CellType>0</CellType>
<%else%> <DataType>10</DataType>
<CellType>0</CellType>
<%end if
case 135%> <DataType>23</DataType>
<CellType>3</CellType>
<%case 3%> <DataType>7</DataType>
<CellType>0</CellType>
<%case 11%> <DataType>3</DataType>
<CellType>2</CellType>
<%case 131%> <DataType>10</DataType>
<CellType>0</CellType>
<%case 5%> <DataType>7</DataType>
<CellType>0</CellType>
<%case else%> <DataType>10</DataType>
<CellType>0</CellType>
<%end select%> </FieldInfo>
<%end if
end if
rstSchema.MoveNextLoop
%> </FieldInfoArray>
</TableInfo>
<Rows>
//生成XML文件体
<%
sql="select * from "&Table_name
rs.open sql,strConn,1,1
Do while Not rs.eof
%> <Row>
<%
for k=0 to rs.fields.count-1
if rs(k).name<>"ORowInfo" or rs(k).name<>"osysMachineID" then
%> <<%=rs(k).name%>><%=rs(k)%></<%=rs(k).name%>>
<%
end if
next
%> </Row>
<%
rs.movenext
loop
rs.close
%> </Rows>
</Table>

2. 代码实现

通过以下语句通知智岛网格控件打开XML文档:

OGrid.SetTableXML(OGrid.HttpGet("http://www.oapro.com/mdb2xml.asp","Table_name=<%=TABLE_NAME%>"))

其中方法HttpGet有二个参数,第一个参数为我们上面介绍的实现数据库转换XML格式的网页地址,一定要为网址格式,不能用相对或绝对路径(因为目前该方法尚不支持),第二个参数为传递到该文件的参数,这里我们传递的是数据表名称:Table_name。

五、保存对数据的修改

在网格控件中可以新增、删除记录以及修改记录内容,如何使这些修改保存到数据源中去?智岛网格控件提供了三个这方面的事件:

1. 新增记录:EventSQLInsertRecord(strTableName,strSQL)
2. 删除记录:EventSQLDeleteRecord(strTableName,strSQL)
3. 修改记录:EventSQLUpdateRecord(strTableName,strSQL)
其中:
strTableName为产生事件的数据表名称;
strSQL为执行事件的SQL语句。

这二个参数由智岛网格控件提供给我们,供我们调用。

我们可通过脚本实现对事件的触发,以下是一范例代码:

<SCRIPT FOR="OGrid" EVENT="EventSQLInsertRecord(strTableName,strSQL)" LANGUAGE="JavaScript" >
OGrid.HttpGet("http://www.oapro.com/updata.asp","sql="+strSQL);
</SCRIPT>

以上代码实现了网格控件的记录发生修改时,便调用updata.asp文件实现对数据库相关内容进行修改。updata.asp文件内容如下:

<%@language=vbscript codepage=936 %>
<%
dim sql
sql=request.QueryString("sql")
response.write sql
strConn="DBQ="+server.mappath("db.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.open strConn
oConn.Execute(sql)
response.write sql
%>

六、范例

上面文章完整地介绍了智岛网格控件在ASP中的使用全过程,也许一个编辑成型的范例更具有说服力。那么就请领略这份鲜活的感觉吧:http://www.oapro.com/ostarocx/sample/ogrid_f/default.asp

ASP:CheckBox控件(选择类控件)

CheckBox控件是用来显示允许用户设置true或false条件的复选框。用户可以从一组CheckBox控件中选择一项或多项。 CheckBox控件的常用属性及说明 属性 说明 ...
  • vjudge
  • vjudge
  • 2014年07月23日 23:33
  • 930

asp.net中image控件的使用

Image控件当没有图片时,显示"红色的X" 不够友好,可以设置其AlternateText属性,也可以显示指定的图片1.普通显示string str ="~/img/"+int.Parse(Text...
  • lsd123
  • lsd123
  • 2008年12月29日 12:49
  • 5495

HDU 1875 畅通工程再续 最小生成树(简单题)

点击打开链接   畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...
  • Dinivity123
  • Dinivity123
  • 2013年08月14日 21:08
  • 897

asp中嵌入HTML代码的简单问题

 我想在浏览器中输出100红色的,如何在其中嵌入HTML代码? response.write "" & a & ""  ...
  • fjnu2008
  • fjnu2008
  • 2010年05月25日 16:31
  • 1549

用网格控件读取和编辑数据

  Web窗体数据的数据绑定虽然好用,但不能对数据库进行更改,因此如果要将数据写入数据库中就只有通过别的方法来实现,例如,我们用一个网格控件(DataGrid)来实现这一任务。  在这个例子中,我们想...
  • lincnl
  • lincnl
  • 2007年05月24日 14:01
  • 1852

NYOJ 1875

畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot...
  • mml5211314
  • mml5211314
  • 2016年01月26日 22:03
  • 633

ASP.Net中menu控件使用

为了使用方便asp.net中提供了两类控件html控件与用户控件。这里不在详细介绍。menu属于用户控件。 menu最重要的是item属性,item包含了menu控件要显示的类表,几级菜单神马的,点...
  • jianxia_wzx
  • jianxia_wzx
  • 2013年05月22日 09:51
  • 3636

Android控件详解之网格控件

我将Android控件的网格控件的学习知识总结一下和大家共享包括(GridView) 在Android开发中,罗列信息或者整理信息就是需要用到网格控件,Android源生提供了GridView控...
  • sex_34
  • sex_34
  • 2015年08月08日 15:02
  • 898

DropDownList控件的基本用法

  protected void Page_Load(object sender, EventArgs e)    ...{        if (!IsPostBack)        ...{  ...
  • wangjun_pfc
  • wangjun_pfc
  • 2007年10月04日 10:37
  • 1329

多重网格、自适应网格和无网格

多重网格法简介(Multi Grid) 转自:http://blog.sina.com.cn/s/blog_4b700c4c0102drjb.html 多重网格法是一种用于求解方程组的方法,可...
  • caiye917015406
  • caiye917015406
  • 2013年01月19日 10:58
  • 10691
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP中使用智岛网格控件全过程
举报原因:
原因补充:

(最多只允许输入30个字)