雖然這看起來比使用參數(shù)更復雜一些,但是仍然比較簡單。別忘了參數(shù)名是如何映射到屬性的?這里所做的就是設置那些屬性,然后調(diào)用Refresh方法更新數(shù)據(jù)控件。看上去,這可能比以前的例子更糟糕,因為在代碼中只有不多的asp,也只是簡單地在屬性中填入Web服務器的名字。但使用該方法可以在不修改代碼的情況下將此ASP頁面從一個服務器移到另一個服務器。作為數(shù)據(jù)源的表名可以通過選擇適當?shù)陌粹o而傳給函數(shù)。 一旦加載了數(shù)據(jù),將觸發(fā)數(shù)據(jù)控件的ondatasetcomplete事件,運行createCells函數(shù)。 function createCells() { var fldF; var tblCell;
// delete what's there already deleteCells();
// now create the new cells for (fldF = new Enumerator(dsoData.recordset.Fields); !fldF.atEnd(); fldF.moveNext()) { // create a new cell for the heading tblCell = tblData.rows[0].insertCell(); tblCell.innerHTML = '<B>' + fldF.item().name + '</B>';
// create a new cell for the body tblCell = tblData.rows[1].insertCell(); tblCell.innerHTML = '<INPUT TYPE="TEXT" DATAFLD="' + fldF.item().name + '"></INPUT>'; }
// now bind to the data source tblData.dataSrc = '#dsoData'; } 這同樣也很簡單。首先刪除了現(xiàn)有的表格單元格(馬上會介紹這個函數(shù)),然后遍歷記錄集的字段。在行頭為每個字段創(chuàng)建一個新單元格(這個表格只有兩行:第一行,即第0行,是表頭;第二行,即第1行,是表體)。表格單元創(chuàng)建完后,將innerHTML屬性設為對應的字段名。在表體中創(chuàng)建新單元格的過程類似,但此時使用innerHTML元件保存綁定到數(shù)據(jù)字段的INPUT標記。當所有的字段都完成這樣的操作后,這個表就與數(shù)據(jù)控件綁定了。 因為這個頁面允許在兩個不同的數(shù)據(jù)集之間進行切換,所以需要先刪除現(xiàn)有的數(shù)據(jù)。 function deleteCells() { var iCell; var iCells;