欢迎光临
我们一直在努力

双击编辑单元格的值[DataGrid – WebFrom]-ASP教程,数据库相关

建站超值云服务器,限时71元/月

思路:

在控件创建时为每个单元格添加双击事件,并标上单元格的行号与列号。

鼠标双击某个单元格时,该单元格的行号与列号做为参数传回服务器。

datagrid重新绑定时修改对象单元格的值。

已知问题:当单元格内容带有单引号(‘)时,内容将会别截断。但是后来输入的不会有这种情况。

那位高人知道怎么解决的话,请一定告诉我。

e-mail:czhenq@163.com

.aspx文件中添加

//返回行号、列号

function dg_dbclick(rowid,columnid)

{

window.form1.action="dbclick.aspx"+"?rowid="+rowid+"&columnid="+columnid;

window.form1.submit();

}

//返回修改后的文本

function txtcell_onchange()

{

window.form1.changetext.value = window.form1.txtcell.value;

}

//文本框keypress事件

function txtcell_onkeypress()

{

//

}

.cs文件

private void page_load(object sender, system.eventargs e)

{

// 在此处放置用户代码以初始化页面

if(!page.ispostback)

{

binddata();

}

else

{

//行id

string rowid = request["rowid"] as string;

//列id

string columnid = request["columnid"] as string;

//文本框中的数据

string str = request["changetext"] as string;

//有行、列id时才重新绑定

if(rowid != "" && columnid != "" && str == "" )

{

binddata2(int.parse(rowid),int.parse(columnid));

}

else

{

//更新程序

label1.text = str;

}

}

}

//双击单元格后重新绑定控件

void binddata2(int rowid, int columnid)

{

sqlconnection conn = new sqlconnection("server=.;database=northwind;uid=sa;pwd=angel");

sqldataadapter da = new sqldataadapter("select top 20 customerid,companyname,contactname,contacttitle,address from customers",conn);

dataset ds = new dataset();

da.fill(ds,"customers");

datatable dt = ds.tables[0];

datarow dr = dt.rows[rowid];

string cellvalue = dr[columnid].tostring();

//修改单元格内容

//onblur 失去焦点

//onkeypress

//onchange

//………………

string strtext = "<input type=text id=txtcell

onblur=javascrite:txtcell_onblur()

onkeypress=javascript:txtcell_onkeypress() onchange=javascript:txtcell_onchange() value="+cellvalue+">";

dr[columnid] = strtext;

datagrid1.datasource = dt;

datagrid1.databind();

conn.dispose();

}

//一般情况下绑定控件

void binddata()

{

sqlconnection conn = new sqlconnection("server=.;database=northwind;uid=sa;pwd=angel");

sqldataadapter da = new sqldataadapter("select top 20 customerid,companyname,contactname,contacttitle,address from customers",conn);

dataset ds = new dataset();

da.fill(ds,"customers");

datagrid1.datasource = ds.tables[0].defaultview;

datagrid1.databind();

conn.dispose();

}

private void datagrid1_itemdatabound(object sender, system.web.ui.webcontrols.datagriditemeventargs e)

{

//为每个单元格添加双击事件

if(e.item.itemtype == listitemtype.alternatingitem || e.item.itemtype == listitemtype.item)

{

//鼠标指针样式

e.item.style.add("cursor","hand");

tablecell cell;

for(int i=0;i<e.item.cells.count;i++)

{

cell = e.item.cells[i];

int rowid = e.item.itemindex;

int columnid = i;

//鼠标停在单元格上时的样式

cell.attributes["onmouseover"]="this.style.backgroundcolor=#d3d3d3";

//鼠标离开时的样式

cell.attributes["onmouseout"]="this.style.backgroundcolor=#ffffff";

cell.attributes["ondblclick"]="javascript:dg_dbclick("+rowid+","+columnid+")";

}

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 双击编辑单元格的值[DataGrid – WebFrom]-ASP教程,数据库相关
分享到: 更多 (0)

相关推荐

  • 暂无文章