<!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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)