在SmartGrid控件中,我们要如何来定义CheckBoxColumn列的选择与取消选择事件呢?现在开始该功能的演示:
一、响应前台事件
1,为要响应Checked事件的列绑定一个htc文件。代码如下:
<SmartWeb:CheckBoxColumn ColumnName="IsSelected" HeaderText="选择" EditorClientScriptUrl="../../htc/Check.htc" / >
2,在htc文件中触发事件,代码如下:
<script language="javascript" >
element.onclick = Click;
function Click() {
debugger;
var gridobj =
element.parentElement.parentElement.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.par
entNode.parentNode;
var rowindex = element.parentNode.parentNode.parentNode.rowIndex;
var KeyFieldNameValue = gridobj.getCellValue(rowindex, "ID");
if (element.checked) {
alert("这是htc测试:你选择了第" + (rowindex+1) + "行,该行的ID值为" + KeyFieldNameValue + "");
}
else {
alert("这是htc测试:你取消选择了第" + (rowindex + 1) + "行,该行的ID值为" + KeyFieldNameValue + "");
}
}
</script >
从上面示例中可以看到,我们不仅可以获取到用户是选择(或取消选择)了那一行数据。然后还可以通过getCellValue方法来获取该行的任何字段的值。非常的方便。
3,在页面文件中触发事件。
如果我们需要将用户选择(或取消选择)的方法放到页面上来定义,那么可以在htc指定响应事件,然后在页面上来定义事件,先改写htc中的代码如下:
<script language="javascript" >
element.onclick = web_Click;
function web_Click() {
var gridobj =
element.parentElement.parentElement.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.par
entNode.parentNode;
var rowindex = element.parentNode.parentNode.parentNode.rowIndex;
webClick(gridobj, (rowindex + 1), element.checked)
}
</script >
在上面代码中可以看到,我们先在htc获取到了smartgrid的端客户对象和用户操作的行号,再和用户的操作(选择还是取消选择)一起传递到webClick方法中,那么接下来,我们只需要在页面中定义webClick事件就可以了,示例如下:
<script type="text/javascript" language="javascript" >
function webClick(grid, row, checked) {
var KeyFieldNameValue = grid.getCellValue(row, "ID");
if (checked) {
alert("这是页面测试:你选择了第" + row + "行,该行的ID值为" + KeyFieldNameValue + "");
}
else {
alert("这是页面测试:你取消选择了第" + row + "行,该行的ID值为" + KeyFieldNameValue + "");
}
}
</script >
二、响应后台事件
以上两个方法都可以响应前台事件,那么我们如何实现用户选择或取消选择时回发页面,响应后台事件呢?其实也很简单,在页面上放一个辅助按钮,再利用__doPostBack方法,就能轻松实现。比如,我们将上面的htc代码改写如下:
<script language="javascript" >
element.onclick = Click;
function Click() {
__doPostBack('辅助按钮的客户端ID', '');
}
</script >
这样,我们就实现了后台回发事件。p