JavaScript *** 作用友华表cell插件,该怎么处理

JavaScript *** 作用友华表cell插件,该怎么处理,第1张

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Cell(华表)</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />

<script type="text/javascript" language="javascript">

function cellReg() {

//华表注册

document.getElementById("cellweb1").Login("", "", "注册ID", "注册码")

}

</script>

<script language="javascript" type="text/javascript">

function onload() {

var cell = document.getElementById("cellweb1")

cell.ShowSideLabel(0, cell.GetCurSheet())//隐藏横向坐标

cell.ShowTopLabel(0, cell.GetCurSheet())//隐藏纵向坐标

}

</script>

<script language="javascript" type="text/javascript">

function getValue()

{

var date = new Date()

var startdate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()

var enddate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()

var printdate = date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()

var err = document.all.cellweb1.openfile("<%=ConfigurationSettings.AppSettings["cell"].ToString()%>newCell.cll","")

if(err == -1)

{

alert("模板文件不存在请确认!")

}

var cell = document.getElementById("cellweb1")

for (var j = 0j <= 9j++)

{

cell.SetCellTextColor(1 + j, 3, cell.GetCurSheet(),1)

}

cell.SetCellInput(1, -1, cell.GetCurSheet(),5)//设置id列为只读

//填充模板头

cell.S(1,2,cell.GetCurSheet(),"开始时间:")

cell.S(2,2,cell.GetCurSheet(),startdate)

cell.S(3,2,cell.GetCurSheet(),"结束时间:")

cell.S(4,2,cell.GetCurSheet(),enddate)

cell.S(5,2,cell.GetCurSheet(),"打印时间:")

cell.S(7,2,cell.GetCurSheet(),printdate)

//填充模板头

//填充表头背景颜色

for(var h = 0h <= 9h++)

{

cell.SetCellBackColor(1+h,3,cell.GetCurSheet(), 5)

}

//填充表列名

cell.S(1,3,cell.GetCurSheet(),"序号")

cell.S(2,3,cell.GetCurSheet(),"编号")

cell.S(3,3,cell.GetCurSheet(),"传感器")

cell.S(4,3,cell.GetCurSheet(),"单位")

cell.S(5,3,cell.GetCurSheet(),"地点")

cell.S(6,3,cell.GetCurSheet(),"状态")

cell.S(7,3,cell.GetCurSheet(),"数值")

cell.S(8,3,cell.GetCurSheet(),"时间")

cell.S(9,3,cell.GetCurSheet(),"开始时间")

cell.S(10,3,cell.GetCurSheet(),"结束时间")

//填充表列名

var xh = document.getElementById("myxuhao").value //id

var nodeid = document.getElementById("mynodeid").value //nodeid

var sensor = document.getElementById("mysensor").value //传感器名

var unit = document.getElementById("myunit").value //单位

var placement= document.getElementById("myplacement").value//地点

var status= document.getElementById("mystatus").value //状态

var value= document.getElementById("myvalue").value//值

var save_time= document.getElementById("mysave_time").value//保存时间

var startTime= document.getElementById("mystartTime").value//开始时间

var endTime= document.getElementById("myendTime").value//结束时间

var str = new Array()

var str1 = new Array()

var str2 = new Array()

var str3 = new Array()

var str4 = new Array()

var str5 = new Array()

var str6 = new Array()

var str7 = new Array()

var str8 = new Array()

var str9 = new Array()

str = xh.split(",")

str1 = nodeid.split(",")

str2 = sensor.split(",")

str3 = unit.split(",")

str4 = placement.split(",")

str5 = status.split(",")

str6 = value.split(",")

str7 = save_time.split(",")

str8 = startTime.split(",")

str9 = endTime.split(",")

for(var i=0i<str.length++i)

{

cell.S(1,4+i,cell.GetCurSheet(), str[i])

cell.S(2,4+i,cell.GetCurSheet(), str1[i])

cell.S(3,4+i,cell.GetCurSheet(), str2[i])

cell.S(4,4+i,cell.GetCurSheet(), str3[i])

cell.S(5,4+i,cell.GetCurSheet(), str4[i])

cell.S(6,4+i,cell.GetCurSheet(), str5[i])

cell.S(7,4+i,cell.GetCurSheet(), str6[i])

cell.S(8,4+i,cell.GetCurSheet(), str7[i])

cell.S(9,4+i,cell.GetCurSheet(), str8[i])

cell.S(10,4+i,cell.GetCurSheet(), str9[i])

}

cell.ReDraw()//重新加载报表数据

}

</script>

<script type="text/javascript" language="javascript">

function btn_Edit()

{

//设置表页为只读

document.getElementById("cellweb1").WorkbookReadonly = false

//设置不支持允许拖动

document.getElementById("cellweb1").AllowDragdrop = false

}

//打印预览

function btn_PrePrint()

{

document.getElementById("cellweb1").PrintPreview(true, document.getElementById("cellweb1").GetCurSheet)

}

//打印

function btn_Print()

{

document.getElementById("cellweb1").PrintSheet(false, document.getElementById("cellweb1").GetCurSheet)

}

//保存

function btn_Save()

{

document.getElementById("cellweb1").SaveFile()

}

function btn_SetPrint()

{

document.getElementById("cellweb1").PrintPageSetup()

}

function fn_Print()

{

if (confirm("确定列印吗"))

{

document.all.btnWonem_tabButtonCtl.style.display = "none"

window.print()

return false

}

else

{

return false

}

}

</script>

<style type="text/css">

.style1

{

height: 526px

}

#btnquery

{

width: 66px

}

#btnedit

{

width: 68px

}

#btnprint

{

width: 73px

}

#btnsave

{

width: 75px

}

</style>

</head>

<!--onload="cellreg()"-->

<body onload="onload()">

<form id="form1" runat="server">

<table width="100%">

<tr>

<td height="50px">

<input id="btnquery" type="button" value="查询" onclick="return getValue()" />

<input id="btnedit" type="button" value="编辑" onclick="return btn_Edit()" />

<input id="btnpreprint" type="button" value="打印预览" onclick="return btn_PrePrint()" />

<input id="btnsetprint" type="button" value="打印设置" onclick="return btn_SetPrint()" />

<input id="btnprint" type="button" value="打印" onclick="return btn_Print()" />

<input id="btnsave" type="button" value="保存" onclick="return btn_Save()" />

<input type="hidden" name="myxuhao" id="myxuhao" value='<%=xuhao %>' />

<input type="hidden" name="mynodeid" id="mynodeid" value='<%=nodeid %>' />

<input type="hidden" name="mysensor" id="mysensor" value='<%=sensor %>' />

<input type="hidden" name="myunit" id="myunit" value='<%=unit %>' />

<input type="hidden" name="myplacement" id="myplacement" value='<%=placement %>' />

<input type="hidden" name="mystatus" id="mystatus" value='<%=status %>' />

<input type="hidden" name="myvalue" id="myvalue" value='<%=value %>' />

<input type="hidden" name="mysave_time" id="mysave_time" value='<%=save_time %>' />

<input type="hidden" name="mystartTime" id="mystartTime" value='<%=startTime %>' />

<input type="hidden" name="myendTime" id="myendTime" value='<%=endTime %>' />

</td>

</tr>

<tr>

<td class="style1">

<object id="cellweb1" style="z-index: 102left: 14pxwidth: 95%position: absolutetop: 70pxheight: 100%"

classid="clsid:3f166327-8030-4881-8bd2-ea25350e574a">

<param name="_version" value="65536" />

<param name="_extentx" value="14182" />

<param name="_extenty" value="7197" />

<param name="_stockprops" value="0" />

</object>

</td>

</tr>

</table>

</form>

</body>

</html>

1) 使用 ReadOnly 属性

摇∪绻M珼ataGridView 内所有单元格都不可编辑, 那么只要:

[VB.NET]

' 设置 DataGridView1 为只读

DataGridView1.ReadOnly = True

[C#]

// 设置 DataGridView1 为只读

DataGridView1.ReadOnly = true

此时,用户的新增行 *** 作和删除行 *** 作也被屏蔽了。

摇∪绻M珼ataGridView 内某个单元格不可编辑, 那么只要:

[VB.NET]

' 设置 DataGridView1 的第2列整列单元格为只读

DataGridView1.Columns(1).ReadOnly = True

' 设置 DataGridView1 的第3行整行单元格为只读

DataGridView1.Rows(2).ReadOnly = True

' 设置 DataGridView1 的[0,0]单元格为只读

DataGridView1(0, 0).ReadOnly = True

[C#]

// 设置 DataGridView1 的第2列整列单元格为只读

DataGridView1.Columns[1].ReadOnly = true

// 设置 DataGridView1 的第3行整行单元格为只读

DataGridView1.Rows[2].ReadOnly = true

// 设置 DataGridView1 的[0,0]单元格为只读

DataGridView1[0, 0].ReadOnly = true

2) 使用 EditMode 属性

DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。

[VB.NET]

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically

[C#]

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically

3) 根据条件设定单元格的不可编辑状态

当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。

[VB.NET]

'CellBeginEdit 事件处理方法

Private Sub DataGridView1_CellBeginEdit(ByVal sender As Object, _

ByVal e As DataGridViewCellCancelEventArgs) _

Handles DataGridView1.CellBeginEdit

Dim dgv As DataGridView = CType(sender, DataGridView)

' 是否可以进行编辑的条件检查

If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _

Not CBool(dgv("Column2", e.RowIndex).Value) Then

' 取消编辑

e.Cancel = True

End If

End Sub

[C#]

// CellBeginEdit 事件处理方法

private void DataGridView1_CellBeginEdit(object sender,

DataGridViewCellCancelEventArgs e)

{

DataGridView dgv = (DataGridView)sender

//是否可以进行编辑的条件检查

if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&

!(bool)dgv["Column2", e.RowIndex].Value)

{

// 取消编辑

e.Cancel = true

}

}

________________________________________

③ DataGridView 不显示最下面的新行:

GO TO TOP

通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * )。如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。

[VB.NET]

' 设置用户不能手动给 DataGridView1 添加新行

DataGridView1.AllowUserToAddRows = False

[C#]

// 设置用户不能手动给 DataGridView1 添加新行

DataGridView1.AllowUserToAddRows = false

但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新行。

补足: 如果 DataGridView 的 DataSource 绑定的是 DataView, 还可以通过设置 DataView.AllowAdd

属性为 False 来达到同样的效果。

________________________________________

④ DataGridView 判断新增行:

GO TO TOP

DataGridView的AllowUserToAddRows属性为True时也就是允许用户追加新行的场合下,DataGridView的最后一行就是新追加的行(*行)。使用 DataGridViewRow.IsNewRow 属性可以判断哪一行是新追加的行。另外,通过DataGridView.NewRowIndex 可以获取新行的行序列号。在没有新行的时候,NewRowIndex = -1。

[VB.NET]

If DataGridView1.CurrentRow.IsNewRow Then

Console.WriteLine("当前行为新追加行。")

Else

Console.WriteLine("当前行不是新追加行。")

End If

________________________________________

⑤ DataGridView 行的用户删除 *** 作的自定义:

GO TO TOP

1) 无条件的限制行删除 *** 作。

默认时,DataGridView 是允许用户进行行的删除 *** 作的。如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时,用户的行删除 *** 作就被禁止了。

[VB.NET]

' 禁止DataGridView1的行删除 *** 作。

DataGridView1.AllowUserToDeleteRows = False

[C#]

// 禁止DataGridView1的行删除 *** 作。

DataGridView1.AllowUserToDeleteRows = false

但是,通过 DataGridViewRowCollection.Remove 还是可以进行行的删除。

补足: 如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制行的删除。

2) 行删除时的条件判断处理。

用户在删除行的时候,将会引发 DataGridView.UserDeletingRow 事件。在这个事件里,可以判断条件并取消删除 *** 作。

[VB.NET]

' DataGridView1 的 UserDeletingRow 事件

Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, _

ByVal e As DataGridViewRowCancelEventArgs) _

Handles DataGridView1.UserDeletingRow

' 删除前的用户确认。

If MessageBox.Show("确认要删除该行数据吗?", "删除确认", _

MessageBoxButtons.OKCancel, MessageBoxIcon.Question) <>_

Windows.Forms.DialogResult.OK Then

' 如果不是 OK,则取消。

e.Cancel = True

End If

End Sub

[C#]

// DataGridView1 的 UserDeletingRow 事件

private void DataGridView1_UserDeletingRow(

object sender, DataGridViewRowCancelEventArgs e)

{

// 删除前的用户确认。

if (MessageBox.Show("确认要删除该行数据吗?", "删除确认",

MessageBoxButtons.OKCancel,

MessageBoxIcon.Question) != DialogResult.OK)

{

// 如果不是 OK,则取消。

e.Cancel = true

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7849464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存