欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SmartGrid使用教程 » 正文

从SmartGrid中获取数据与数据操作

创建时间:2012年03月10日 12:04  阅读次数:(3857)
分享到:
注意:下文中出现的"前台",是指在asp.net页面操作数据,即使用javascript来实现的。"后台"是指在cs页面,即使用C#语言来实现的。

一、获取SmartGrid控件中的数据


(1)从前台获取数据方法
获取数据的方法:getGridData(),返回xml对象,可以通过DOM操作转换为行数据。根节点名称为“data”。
语法:getGridData()
例:
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
    var data = new ActiveXObject("MSXML.DOMDocument");
    data = grid.getGridData();
    alert(data.xml);
    var details = data.getElementsByTagName("data");
    if (details.length  > 0) {
        var rows = details[0].getElementsByTagName("row");
        for (var i = 0; i < rows.length; i++) {
            for (var j = 0; j < rows[i].attributes.length; j++) {
                alert("name=" + rows[i].attributes[j].name + ";value=" + rows[i].attributes[j].value);
            }
        }
    }


(2)后台获取数据方法1:访问DataSource属性
可将DataSource属性的值转化为DataTable,再进行下一步的操作。
示例:
DataTable dt=this.SmartGrid1.DataSource as DataTable
……


(3)后台获取数据方法2:访问ClientData属性
同上。

二、SmartGrid前台搜索数据(search)


语法:search(string pattern,string columnName,bool bForce)
参数pattern:进行查询的正则表达式。正则表达式js中search使用的正则表达式。缺省为包含。
参数columnName:在哪一列进行查询。如果该列名为空,则缺省从当前的anchor列进行检索。
参数bForce:强制从第一行开始检索。缺省从当前行开始检索
在调用search()时可省略相关参数。

与搜索相关的属性有SearchOption,可以取如下值:
Client: 在客户端已有的数据中进行检索。
Server: 触发服务器端 Search 事件,这使您可以为事件提供自定义处理程序。
Custom: 触发自定义检索事件。
搜索到数据后会自动跳到符合条件的行
例1. 
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var data = new ActiveXObject("MSXML.DOMDocument");
var cond = document.getElementById("txtSearchCondition").value;
//cond=”^abc” 
    grid.search(cond); //从当前行开始在所有栏位中查找以“abc“开头的数据


例2.
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var data = new ActiveXObject("MSXML.DOMDocument");
var cond = document.getElementById("txtSearchCondition").value;
//cond=”^abc$” 
    grid.search(cond); //从当前行开始在所有栏位中查找等于“abc“的数据


例3.
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var data = new ActiveXObject("MSXML.DOMDocument");
var cond = document.getElementById("txtSearchCondition").value;
var colName = document.getElementById("txtSearchColName").value;
//colName=”TaskName”
//cond=”abc” 
    grid.search(cond,colName); //从当前行开始在TaskName栏位中查找包含“abc“的数据


例4.
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var data = new ActiveXObject("MSXML.DOMDocument");
var cond = document.getElementById("txtSearchCondition").value;
var colName = document.getElementById("txtSearchColName").value;
//colName=”TaskName”
//cond=”abc$” 
    grid.search(cond,colName,true); //从第一行开始在TaskName栏位中查找以“abc”结尾的数据


三、SmartGrid后台搜索数据(search)


设置SearchOption=”Server”,OnSearch=”事件名称”
Search事件的委托原型; 
public delegate void SmartGridSearchEventHandler(object sender,SmartGridSearchEventArgs e)
SmartGridSearchEventArgs类包含2个重要属性:
ColumnName:在哪一列进行查询。如果该列名为空,则缺省从当前的anchor列进行检索。
Pattern:进行查询的正则表达式。正则表达式js中search使用的正则表达式。缺省为包含。r
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论8条
  • #1楼  评论人:匿名  评论时间:2012-5-16 17:58:48
  • LZ,能不能在绑定的时候,根据条件,有选择的设置某一列的某些单元格不能编辑。类似gridview的DataBinding。有enableCell方法,但是怎么在绑定的时候操作呢
  • #2楼  评论人:Wyf  评论时间:2012-5-16 19:27:18
  • 这个可以,明天给你做个示例。
  • #3楼  评论人:Wyf  评论时间:2012-5-17 14:17:43
  • 你可以看这个示例:
    实现根据条件设置SmartGrid的单元格是否可以编辑的功能示例
    http://www.lmwlove.com/ac/ID838
  • #4楼  评论人:匿名  评论时间:2012-10-16 11:15:31
  • 第一列文本字段,在htc change事件中带出后台查询到的信息,第二列,下拉列,在第一列获取的信息中,会给下拉列赋值。

    如果在第一列和这个下拉列之间没有一个可编辑的文本字段做过度,那么在给下拉列赋值之后,下拉列的valueColumn是保存不到值的。lz有没有遇到过
  • #5楼  评论人:Wyf  评论时间:2012-10-16 11:29:22
  • 还没有遇到过,只是清楚下拉列的value必须需要另一个列来保存,这个列可以设置Visible="false",你可以做你的过度字段设置Visible="false"度试。
  • #6楼  评论人:Wyf  评论时间:2012-10-16 11:30:22
  • 还没有遇到过,只是清楚下拉列的value必须需要另一个列来保存,这个列可以设置Visible="false",你可以将你的过度字段设置Visible="false"试试。
  • #7楼  评论人:匿名  评论时间:2012-10-16 11:49:30
  • 是的,一直是这样做的,其他的没问题,就是这里如果这样就会有问题。其实还有另外一个问题,就是一个列,columnName不能用size,也会出问题。
  • #8楼  评论人:Wyf  评论时间:2012-10-16 13:59:59
  • columnName不能用size,可能因为size是关键字。
发表评论:
留言人:
内  容:
请输入问题 67+66=? 的结果(结果是:133)
结  果: