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

在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.Net平台的Web表格控件,用于Web网站的开发。 ★支持多种浏览器(IE6以上、FireFox2.0以上、谷歌浏览器等)。 ★使用控件开发的网站,网页上表格行的插入、追加、删除、修改、上下移动、拷贝、粘贴等操作,能够立即在浏览器客户端完成,操作按钮在上图表格的左下部。 ★提交后的数据为一个DataTable。用户可使用GetCommitData方法取得使用控件,很好地节约了网络资源,提升了网站的多用户对应能力。极大地提高了网页的反应速度,提升了网站浏览者的浏览体验。 ★本控件提供了丰富的自定义样式,供开发人员设定使用。表格(GridStyle)、奇偶行(ItemStyle、AlternatingItemStyle)、列(列的ItemStyle)、列内的控件(列的ControlStyle)、合计行(PageTotalStyle、AllTotalStyle)、控制行(包含各种行操作按钮和页操作按钮ToolBarStyle)都可以自由的进行样式设定。 ★提供多种类型的列供开发人员使用:(LabelColumn(图A-金额),TextBoxColumn(图A-数量、单价),DropDownListColumn(图A-类别、商品),RadioButtonListColumn(图A-发货区分),CheckBoxColumn(图A-包装有无),RowIndexColumn(图A-ID),HiddenColumn(隐藏列),TemplateColumn(图A-备注,模板,用于扩展)。 ★支持多行表头显示(图A),支持列合并(图A-发货区分)、行合并(图A-备注)。使用控件进行开发,开发人员能够自由设定各种显示效果。 ★支持开发人员自定义表头。 ★支持一个数据行,多行表格行表示。避免了列项目多的情况下,网页显示过宽的问题。(图A) ★支持金额、数字的自定义格式化功能。(图A-数量、单价,金额,金额美元) ★支持货币符号的自定义(如:$,¥)。(图A-金额,金额美元) ★支持列的公式自动计算功能。(图A-金额=数量&times;单价,金额美元=金额/汇率)列设定公式后,在网页上根据因子的变化自动计算结果。结合金额、数字的自定义格式化和货币符号的自定义功能,可开发专业性的财会、金融网站。 ★支持列的Ajax联动功能。特别定义了OnCallBack事件,开发人员能非常简单地实现Ajax联动,而页面不需要刷新。(图A-类别变化的时候,Ajax联动,更新了图A-商品列表) ★支持模板列(TemplateColumn),(图A-备注,模板)。并支持模板列的Ajax联动功能。模板列提供了扩展功能,使页面可以使用控件支持的列类型之外的控件类型。 ★支持自定义分页(图A定义每页大小为3行)。可由开发人员自行决定网页提交的模式,是小批量多批次,还是大批量少批次。本控件的灵活性提高了网站的灵活适应性。 ★本控件自动提供自带的分页控件,提供页的导航功能(图A右下部)。开发人员也可以禁止本控件提供的分页控件使用自己的分页控件或按钮调用本控件的分页功能。 ★表格行的上下移动功能,在分页的情况下,当需要跨页的情况下,自动提交数据,执行RowMoving事件,开发者可以在此事件执行真正的数据行的上下移动,再绑定显示数据。 ★表格行的拷贝、粘贴功能,在分页的情况下,支持跨页执行,支持带Ajax联动列的直接拷贝。 ★支持操作的撤销、恢复功能,提升用户操作体验。 ★支持页合计和全部页合计。支持五种合计类型(Sum,Max,Min,Count,Average)。通过简单的开关设置,就可以完成合计功能。(图A-数量、金额、金额美元,设定了Sum合计;图A-单价,设定了Average合计)。 ★支持多种数据源。 ★所见即所得的设计时支持,方便软件开发者进行页面设计。 ★提供丰富、实用的JS接口,供开发人员使用。 ★本控件的开发,力求功能的简洁、实用、耐用。提升开发人员的开发体验。 QQ:1030032915 MSN:IntelliGrid@hotmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值