全编辑webgrid控件lrcgrid(4)—— 脚本库和样式表
脚本库:包含了控件客户端操作的函数.包括:
将表格行切换到编辑模式的函数:chgeditrow(rowindex,tab)()
将表格列切换到编辑模式的函数:chgedit(colindex,tab)
在客户端构造更新数据库的sql语句: buildsql(tabname)
添加新记录的函数:addrow(tab)
移除新添加行的函数: removerow(tab)
全部js代码:
function chgeditrow(rowindex,tab)
{
var tabbody = tab.tbodies[0];
var ise = 0;
//alert(rowindex);
//alert(tabbody.rows[rowindex].cells.length);
for(var i = 0;i< tabbody.rows[rowindex].cells.length;i++)
{
//alert(tabbody.rows[rowindex].cells[i].childnodes[0].id);
if(tabbody.rows[rowindex].cells[i].haschildnodes())
{
if(tabbody.rows[rowindex].cells[i].childnodes[0].nodetype != 3)
{
if(tabbody.rows[rowindex].cells[i].childnodes[0].id.indexof(lrctb_) != -1)
{
if(!tabbody.rows[rowindex].cells[i].childnodes[0].disabled)
{
tabbody.rows[rowindex].cells[i].childnodes[0].disabled = true;
tabbody.rows[rowindex].cells[i].childnodes[0].classname = "lrc_txt_hid";
}
else
{
tabbody.rows[rowindex].cells[i].childnodes[0].disabled = false;
tabbody.rows[rowindex].cells[i].childnodes[0].classname = "lrc_txt_show";
}
}
else if(tabbody.rows[rowindex].cells[i].childnodes[0].id.indexof(lrcdrl_) != -1)
{
if(!tabbody.rows[rowindex].cells[i].childnodes[0].disabled)
{
tabbody.rows[rowindex].cells[i].childnodes[0].disabled = true;
}
else
{
tabbody.rows[rowindex].cells[i].childnodes[0].disabled = false;
}
}
}
}
}
}
function chgedit(colindex,tab)
{
var tabbody = tab.tbodies[0];
var onerow;
if(tabbody.rows[1].cells[colindex].childnodes[0].disabled)
{
for(var i=1;i<tabbody.rows.length-1;i++)
{
onerow = tabbody.rows[i];
if(onerow.cells[colindex].childnodes[0].id.indexof(lrctb_) != -1)
{
onerow.cells[colindex].childnodes[0].disabled = false;
onerow.cells[colindex].childnodes[0].classname = "lrc_txt_show";
}
else if(onerow.cells[colindex].childnodes[0].id.indexof(lrcdrl_) != -1)
{
onerow.cells[colindex].childnodes[0].disabled = false;
}
}
}
else
{
for(var i=1;i<tabbody.rows.length-1;i++)
{
onerow = tabbody.rows[i];
if(onerow.cells[colindex].childnodes[0].id.indexof(lrctb_) != -1)
{
onerow.cells[colindex].childnodes[0].disabled = true;
onerow.cells[colindex].childnodes[0].classname = "lrc_txt_hid";
}
else if(onerow.cells[colindex].childnodes[0].id.indexof(lrcdrl_) != -1)
{
onerow.cells[colindex].childnodes[0].disabled = true;
}
}
}
}
function buildsql(tabname)
{
var updsql = ;
var tabbody = tabname.tbodies[0];
var onerow;
var len = tabbody.rows.length;
var cellen = tabname.rows[0].cells.length;
var isadd = tabname.getattribute("isadd");
var isdel = tabname.getattribute("isdel");
if(isdel == true)
{
cellen = cellen -1;
}
var hidindex = 0;
if(isadd == true)
{
hidindex = 2;
}
var tabn = tabbody.rows[len-1].cells[hidindex].childnodes[1].value;
var coln = tabbody.rows[len-1].cells[hidindex].childnodes[2].value;
var colna = coln.split(",");
var prik = tabbody.rows[len-1].cells[hidindex].childnodes[3].value;
var prika = prik.split(",");
var editcol = tabbody.rows[len-1].cells[hidindex].childnodes[4].value;
var editcola;
if(editcol == lrcalledit)
{
var len = colna.length – prika.length;
editcola = new array(len);
var indexe = 0;
for(var i = 0 ; i< colna.length ; i++)
{
var ispri = 0;
for(var j=0;j<prika.length;j++)
{
if(prika[j] == i)
{
ispri = 1;
}
}
if(ispri == 0)
{
editcola[indexe] = i;
indexe++;
}
}
}
else
{
editcola = editcol.split(",");
}
var strupd = "update " + tabn + " set ";
var strins = "insert " + tabn + " (" + coln + ") values ( ";
for(var i=1;i<tabbody.rows.length-1;i++)
{
onerow = tabbody.rows[i];
//更新语句
if(onerow.id != "lrcnewrow")
{
updsql += strupd;
for(var j=0;j<editcola.length;j++)
{
updsql += colna[editcola[j]];
updsql += " = ";
if(onerow.cells[editcola[j]].firstchild.id.indexof(lrcdrl_) != -1)
{
updsql += onerow.cells[editcola[j]].firstchild.options[onerow.cells[editcola[j]].firstchild.selectedindex ].value;
}
else
{
updsql += onerow.cells[editcola[j]].firstchild.value;
}
if(j != editcola.length – 1)
{
updsql += ", ";
}
else
{
updsql += " ";
}
}
updsql += " where ";
for(var k=0;k<prika.length;k++)
{
updsql += colna[prika[k]];
updsql += " = ";
updsql += onerow.cells[prika[k]].firstchild.nodevalue;
if(k != prika.length – 1)
{
updsql += " and ";
}
else
{
updsql += " \r";
}
}
}
else //插入语句
{
updsql += strins;
for(var k=0;k<cellen;k++)
{
if(onerow.cells[k].firstchild.id.indexof(lrcdrl_) != -1)
{
var selv = onerow.cells[k].firstchild.options[onerow.cells[k].firstchild.selectedindex].value;
updsql = updsql + "" + selv + "";
}
else
{
updsql = updsql + "" + onerow.cells[k].firstchild.value + "";
}
if(k+1 != cellen)
{
updsql += ",";
}
else
{
updsql += ") \r";
}
}
}
}
var tabbody = tabname.tbodies[0];
var len = tabbody.rows.length;
tabbody.rows[len-1].cells[hidindex].childnodes[5].value = updsql;
return true;
}
function addrow(tab)
{
var tabbody = tab.tbodies[0];
var onerow;
var rowlen = tab.rows.length;
var cellen = tab.rows[0].cells.length;
var isadd = tab.getattribute("isadd");
var isdel = tab.getattribute("isdel");
if(isdel == true)
{
cellen = cellen -1;
}
var newrow = tabbody.insertrow(rowlen-1);
newrow.id = "lrcnewrow";
// for(var i = 0;i< cellen;i++)
// {
// var newcel = newrow.insertcell();< br> // var str="<input type=textname=\"newt\"class=\"lrc_txt_normal\"onfocus=\"this.classname=lrc_txt_edit;this.parentnode.parentnode.bgcolor=#c1d2ee;\" onblur=\"this.classname=lrc_txt_normal;this.parentnode.parentnode.bgcolor=#ffffff;\"/>";
// newcel.innerhtml =str;
// }
for(var i = 0;i<cellen;i++)
{
var newcel = newrow.insertcell();
if(tabbody.rows[1].cells[i].childnodes[0].nodetype != 3)
{
if(tabbody.rows[1].cells[i].firstchild.id.indexof(lrcdrl_) != -1)
{
var innert = tabbody.rows[1].cells[i].innerhtml;
newcel.innerhtml = innert;
newcel.firstchild.disabled = false;
}
else
{< br> var str="<input type=textname=\"newt\"class=\"lrc_txt_normal\"onfocus=\"this.classname=lrc_txt_edit;this.parentnode.parentnode.bgcolor=#c1d2ee;\" onblur=\"this.classname=lrc_txt_normal;this.parentnode.parentnode.bgcolor=#ffffff;\"/>";
newcel.innerhtml =str;
}
}
else
{< br> var str="<input type=textname=\"newt\"class=\"lrc_txt_normal\"onfocus=\"this.classname=lrc_txt_edit;this.parentnode.parentnode.bgcolor=#c1d2ee;\" onblur=\"this.classname=lrc_txt_normal;this.parentnode.parentnode.bgcolor=#ffffff;\"/>";
newcel.innerhtml =str;
}
}
}
function removerow(tab)
{
var tabbody = tab.tbodies[0];
var onerow;
var rowlen = tab.rows.length;
if(tabbody.rows[rowlen-2].id == "lrcnewrow")
{
tabbody.deleterow(rowlen-2);
}
}
样式表文件:
.lrc_txt_edit
{
border-width:medium;
border-style:groove;
font-weight:bolder;
background-color:yellow;
width:95;
}
.lrc_txt_normal
{
border-style:groove;
border-width:thin;
font-weight:normal;
background-color:#f5f7fb;
width:95;
}
.lrc_txt_hid
{
border-style:none;
width:95;
background:url(images/txt_back.gif);
}
.lrc_txt_show
{
border-style:groove;
width:95;
background-color:#ffffff;
}
作者blog:http://blog.csdn.net/masterlrc/
