點擊保存以后,你的window窗口編輯的數(shù)據(jù)會存儲在oracle庫中的表(這個表應該是你table列表展示的信息用的表)中,
我們提供的服務有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、興山ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的興山網(wǎng)站制作公司
然后刷新頁面,展示列表的sql按時間倒序排列,你就會立刻看到列表上添加了這個信息
你想要的效果是,表格的每一行后面有個“添加”按鈕,點擊按鈕后,會自動復制當前行,添加到當前行的后面,這個效果吧?
假設(shè),我們有這樣一個table表格:
table?id="table"
tr
td內(nèi)容1/td
td
button?class="addtr"添加/button
button?class="deltr"刪除/button
/td
tr
/table
用jquery來實現(xiàn)“添加”和“刪除”的功能:
下面這個是添加:
$("#table").on("click","button.addtr",function(){
var?$tr=$(this).parents("tr");
$tr.append($tr.clone());
});
下面是刪除:
$("#table").on("click","button.deltr",function(){
var?$tr=$(this).parents("tr");
$tr.remove();
});
可以參考這里,有完整的在線實例演示:
query實例:表格里點擊按鈕后添加一行,新添加的行附帶刪除按鈕
datatable如果想轉(zhuǎn)換成JSON類型的數(shù)據(jù),是需要處理的。直接用微軟提供的JavaScriptSerializer類直接序列化,會報錯。
所以這里需要貼上兩個方法,專門用來轉(zhuǎn)換datatable的
#region?DataTable轉(zhuǎn)換為JSON
///?summary
///?DataTable生成JSON
///?/summary
///?param?name="dt"/param
///?returns/returns
public?static?string?CreateJSON(DataTable?dt)
{
Dictionarystring,?object?dit?=?new?Dictionarystring,?object();
ListDictionarystring,?string?list?=?DateTableConverter(dt);
if?(list?!=?null)
{
dit[dt.TableName]?=?DateTableConverter(dt);
return?new?JavaScriptSerializer().Serialize(dit);
}
else
{
return?"";
}
}
///?summary
///?將DataTable數(shù)據(jù)轉(zhuǎn)化為字典類型
///?/summary
///?param?name="dt"/param
///?returns/returns
public?static?ListDictionarystring,?string?DateTableConverter(DataTable?dt)
{
ListDictionarystring,?string?list?=?new?ListDictionarystring,?string();
string?cloName?=?string.Empty;
foreach?(DataRow?dr?in?dt.Rows)
{
Dictionarystring,?string?cloumn?=?new?Dictionarystring,?string();
foreach?(DataColumn?dc?in?dt.Columns)
{
cloName?=?dc.ColumnName;
cloumn.Add(cloName,?dr[cloName].ToString());
}
list.Add(cloumn);
}
return?list;
}
#endregion
2.調(diào)用代碼如下
DataTable?table?=?new?DataTable("Table1");
DataColumn?col1?=?new?DataColumn("ID",?typeof(string));
DataColumn?col2?=?new?DataColumn("Name",?typeof(string));
table.Columns.Add(col1);
table.Columns.Add(col2);
DataRow?row1?=?table.NewRow();
row1["ID"]?=?"1";
row1["Name"]?=?"a";
table.Rows.Add(row1);
DataRow?row2?=?table.NewRow();
row2["ID"]?=?"2";
row2["Name"]?=?"b";
table.Rows.Add(row2);
string?json?=?CreateJSON(table);
3.json結(jié)果如下
{"Table1":[{"ID":"1","Name":"a"},{"ID":"2","Name":"b"}]}
4.數(shù)組中每一個元素,都是一行數(shù)據(jù)。只要循環(huán)遍歷,然后將結(jié)果添加入你已經(jīng)創(chuàng)建好的table中就可以了。還有疑問,繼續(xù)追問吧。我先去吃飯了。
jquery clone方法實現(xiàn)動態(tài)增加行和刪除行
//待克隆的div
div class="serviceList-sel-body"
div id="serviceId0" name="divName"
select id="service_select_id" name="serviceId" class="serviceSelect" style="width: 100px;" /select
input id="serviceRateId" name="serviceRate" class="serviceRate" onblur="javascript:checkServiceRate(this);"name=""maxlength="5" style="width: 60px;"/%
input id="divideRateId" name="divideRate" class="divideRate" onblur="javascript:checkDivideRate(this);" name="" maxlength="5" style="width: 60px;"/%
a href="#" id="delA" onclick="return false;" title="刪除" class="delRow_Link" /a
/div
js代碼//動態(tài)添加行
function addRow(service_id,service_rate,divide_rate,flag){
var idNum;//計數(shù)標識
var row1;
row1=$("#serviceId"+(idNum-1));//獲得第一行 -----修改(顯示) -- 設(shè)置jquery對象(待克隆的div)
//如果row1為空
if(row1.length==0){
idNum=1;
row1=$("#serviceId"+(idNum-1));
}
var newRow=row1.clone(true);//創(chuàng)建第一行的一個副本
// newRow.insertBefore(row1);//在第一行前插入
newRow.insertAfter(row1);//在第一行后插入
var rndID="serviceId"+idNum;
newRow.attr("id",rndID);//設(shè)置行ID 每次都不一樣
//給各個 select input 加上不同的id
newRow.find("a").attr("id",rndID);
newRow.find("select.serviceSelect").attr("id","serviceSelect"+rndID);
newRow.find("input.serviceRate").attr("id","serviceRate"+rndID);
newRow.find("input.divideRate").attr("id","divideRate"+rndID);
//初始值為空
$("#serviceRate"+rndID).val("");
$("#divideRate"+rndID).val("");
//綁定事件
newRow.find("input.divideRate").blur(function(){
checkDivideRate(this);
});
newRow.find("input.serviceRate").blur(function(){
checkServiceRate(this);
});
//給新增的每一行內(nèi)的刪除加上刪除事件
newRow.find("a").click(function(){
delRow(this);
});
// 新加行顯示刪除按鍵
newRow.find("a").html(" span style='color: blue;'刪除/span");
//修改時候用到
if(flag==2){
newRow.find("select.serviceSelect").val(service_id);
newRow.find("input.serviceRate").val(service_rate);
newRow.find("input.divideRate").val(divide_rate);
}
//查看時候用到
if(flag==3){
//alert(service_id+" | "+service_rate+" | "+divide_rate);
newRow.find("select.serviceSelect_view").val(service_id);
newRow.find("input.serviceRate_view").val(service_rate);
newRow.find("input.divideRate_view").val(divide_rate);
}
//顯示克隆出的新行數(shù)據(jù)
newRow.show();
idNum++;//克隆一次加一次
}
//動態(tài)刪除行
function delRow(who) {
$("#" + who.id).remove();
}
script type="text/javascript" src="jquery.js"/script
script type="text/javascript"
function add()
{
var id = jQuery("table").find("tr").length +1 ;
var trHTML = " tr id='"+id+"'td"+id+"/tdtd1/td/tr";
jQuery("table").append(trHTML);
}
/script
body
table style="width:200px;height:200px;" border=1
tr id="1"
td1/td
td1/td
/tr
tr id="2"
td2/td
td1/td
/tr
/table
input type="button" value="增加行" onclick="add()"
/body
而且
變量不能這樣定義
var len++;
這是錯誤的!??!
比如設(shè)置table的id為tab
var trHTML = "trtd.../td/tr"
$("#tab").append(trHTML);//在table最后面添加一行
$("#tab tr:eq(2)").after(trHTML); // 在table的第3行后面添加一行這樣就可以進行動態(tài)的添加行了,至于你是通過什么事件來動態(tài)添加那就看你自己的意思了,通過button或者div之類的點擊事件添加,只要把上面的兩行代碼放進去就ok,注意,要把var trHTML那行代碼放進添加事件里面,不然不管點擊多少下,都只能添加一行
$(function() {
$(":button").click(function() {
var tr = "trtdnew/td/tr";
//$("table").append(tr);
$("table tr:eq(2)").after(tr);
});
});
這是我測試用的代碼,你可以運行看看
jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之后又一個優(yōu)秀的JavaScript代碼庫( 或JavaScript框架)。jQuery設(shè)計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設(shè)計模式,優(yōu)化HTML文檔操作、事件處理、動畫設(shè)計和Ajax交互。
jQuery的模塊可以分為:入口模塊、底層支持模塊和功能模塊。其核心特性可以總結(jié)為:具有獨特的鏈式語法和短小清晰的多功能接口;具有高效靈活的css選擇器,并且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富的插件。jQuery兼容各種主流瀏覽器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。