明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在ASP中使用智島網(wǎng)格控件全過程

[摘要]智島網(wǎng)格控件作為數(shù)據(jù)的表示層,可以非常方便的進行貨幣樣式、人民幣大小寫、中文大小寫、各種邏輯樣式、百分比樣式、千分位分割等樣式設(shè)置;可以凍結(jié)、鎖定行列、對輸入數(shù)據(jù)進行驗證;可對字段設(shè)置公式,方便快捷...
    智島網(wǎng)格控件作為數(shù)據(jù)的表示層,可以非常方便的進行貨幣樣式、人民幣大小寫、中文大小寫、各種邏輯樣式、百分比樣式、千分位分割等樣式設(shè)置;可以凍結(jié)、鎖定行列、對輸入數(shù)據(jù)進行驗證;可對字段設(shè)置公式,方便快捷地統(tǒng)計、匯總數(shù)據(jù)。智島網(wǎng)格控件以其豐富多樣的表現(xiàn)形式、簡單易用的操作贏得了廣大軟件開發(fā)人員的一致好評。下面和大家分享一下智島網(wǎng)格控件在ASP中的應(yīng)用心得:

圖1 樣式設(shè)置

圖2 圖片管理

圖3 多層標(biāo)題

圖4 匯總模式

圖5 凍結(jié)鎖定

圖6 合并模式



一、注冊智島網(wǎng)格控件

下載智島網(wǎng)格控件(其文件名為OGrid.ocx)后,按照如下方法注冊控件:

點擊“開始”→“運行”;在運行對話框中輸入以下命令:
regsvr32 < OGrid.ocx文件的絕對路徑>  注冊智島網(wǎng)格控件控件
regsvr32 /u < OGrid.ocx文件的絕對路徑> 解除智島網(wǎng)格控件的注冊

二、在頁面中添加智島網(wǎng)格控件

在頁面中加入以下代碼,即可插入智島網(wǎng)格控件:

<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:指控件對象的名稱,通過該名稱實現(xiàn)對控件的操作;
CODEBASE:指沒有安裝智島網(wǎng)格控件的客戶端運行該頁面時自動下載安裝該控件的刂貳?lt;/P>

三、用智島網(wǎng)格控件表現(xiàn)XML格式數(shù)據(jù)

1. XML文檔格式

智島網(wǎng)格控件采用XML文檔作為數(shù)據(jù)存儲交換格式,下面是一份XML文檔格式:

<?xml version="1.0" encoding="GB2312"?>
<Table>
   <TableInfo><!--表信息-->
      <TableName>人事表</TableName><!--數(shù)據(jù)表名稱-->
      <FieldInfoArray>
         <FieldInfo><!--記錄字段信息的XML-->
            <FieldName>姓名</FieldName><!--字段名稱-->
            <DataType>10</DataType><!--字段數(shù)據(jù)類型3:邏輯型7:數(shù)值型10:字符型12:備注型23:日期型-->
            <CellType>0</CellType><!--表元類型0:文本框,1:組合框,2:檢驗框,3:日期時間,7:人民幣小寫欄金額控件-->
         </FieldInfo> 
         ...
     </FieldInfoArray>
   </TableInfo>

   <Rows><!--多行數(shù)據(jù)-->
     <Row><!--單行數(shù)據(jù)-->
       <name>張三</name>
       <sex>男</sex>
       ...
     </Row>
     ...
   </Rows>
</Table>

2. 代碼實現(xiàn)

通過以下語句通知智島網(wǎng)格控件打開XML文檔:

OGrid.OpenTableXML(")

其中引號內(nèi)XML文檔的絕對路徑,例如:
http://www.oapro.com/ostarocx/sample/OGrid/xml/樣式設(shè)置.xml
或者
C:\樣式設(shè)置.xml

四、用智島網(wǎng)格控件表現(xiàn)來自于數(shù)據(jù)庫的數(shù)據(jù)

1. XML文檔格式

智島網(wǎng)格控件采用XML文檔作為交換格式,但更多的數(shù)據(jù)源是數(shù)據(jù)庫,如何表現(xiàn)來自于數(shù)據(jù)庫的數(shù)據(jù)呢?我們可以將數(shù)據(jù)庫的數(shù)據(jù)動態(tài)轉(zhuǎn)為XML格式。以下代碼實現(xiàn)了將一ACCESS數(shù)據(jù)庫中指定數(shù)據(jù)表的內(nèi)容轉(zhuǎn)為XML文檔格式。您可將代碼中db.mdb文件換成您自己的數(shù)據(jù)庫名稱。指定的數(shù)據(jù)表名稱來自于傳遞到該文件的參數(shù)值:Table_name。

<%
dim sql,rs
dim Table_name
<!--取得數(shù)據(jù)表名稱-->
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. 代碼實現(xiàn)

通過以下語句通知智島網(wǎng)格控件打開XML文檔:

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

其中方法HttpGet有二個參數(shù),第一個參數(shù)為我們上面介紹的實現(xiàn)數(shù)據(jù)庫轉(zhuǎn)換XML格式的網(wǎng)頁地址,一定要為網(wǎng)址格式,不能用相對或絕對路徑(因為目前該方法尚不支持),第二個參數(shù)為傳遞到該文件的參數(shù),這里我們傳遞的是數(shù)據(jù)表名稱:Table_name。

五、保存對數(shù)據(jù)的修改

在網(wǎng)格控件中可以新增、刪除記錄以及修改記錄內(nèi)容,如何使這些修改保存到數(shù)據(jù)源中去?智島網(wǎng)格控件提供了三個這方面的事件:

1. 新增記錄:EventSQLInsertRecord(strTableName,strSQL)
2. 刪除記錄:EventSQLDeleteRecord(strTableName,strSQL)
3. 修改記錄:EventSQLUpdateRecord(strTableName,strSQL)
其中:
strTableName為產(chǎn)生事件的數(shù)據(jù)表名稱;
strSQL為執(zhí)行事件的SQL語句。

這二個參數(shù)由智島網(wǎng)格控件提供給我們,供我們調(diào)用。

我們可通過腳本實現(xiàn)對事件的觸發(fā),以下是一范例代碼:

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

以上代碼實現(xiàn)了網(wǎng)格控件的記錄發(fā)生修改時,便調(diào)用updata.asp文件實現(xiàn)對數(shù)據(jù)庫相關(guān)內(nèi)容進行修改。updata.asp文件內(nèi)容如下:

<%@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
%>

六、范例

上面文章完整地介紹了智島網(wǎng)格控件在ASP中的使用全過程,也許一個編輯成型的范例更具有說服力。那么就請領(lǐng)略這份鮮活的感覺吧:http://www.oapro.com/ostarocx/sample/ogrid_f/default.asp