在ASP中使用智島網(wǎng)格控件全過程
發(fā)表時間:2023-08-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]智島網(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。