Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > RowData >
索引器
名称 说明
Item[ ColData]  根据ColData对象返回当前行指定列的值.
Item[序号]  根据列的序号返回当前行指定列的值.
Item[列名称]  根据列的名称返回当前行指定列的值.
Item[ ColData, DataRowVersion]  根据ColData对象返回当前行相应版本的数据
Item[序号, DataRowVersion]  根据列的序号返回当前行相应版本的数据
Item[列名称, DataRowVersion]  根据列的名称返回当前行相应版本的数据

示例:在下面这样的表中执行下面的代码

执行后变成这样

 Vb.Net
'先定义变量获取表
Dim tbl As SmGrid = Proj.CurrentSmGrid
'定义ColData对象
Dim col As ColData=tbl.DataTableHelp.DataCols("产品")
'获得RowData对象
tbl.Position=1 '先定位到第二行
Dim dr As RowData=tbl.CurrentRowData '取到当前行对象

Proj.MsgDebug.Add("根据ColData对象返回对应列的值:{0}",dr(col))
Proj.MsgDebug.Add("根据列序号返回对应列的值:{0}",dr(1))
Proj.MsgDebug.Add("根据列名称返回对应列的值:{0}",dr("业务员"))

'查看修改后如何获得各版本的值
tbl.Position=2 '先定位到第二行
dr=tbl.CurrentRowData '重新获取当前行对象
Proj.MsgDebug.Add("当前行'产品'列原本的数据:{0}",dr("产品").ToString())
dr("产品")="新值" '修改当前行产品列的值
Proj.MsgDebug.Add("获取当前行行状态的版本:{0}",dr.RowState.ToString())
Proj.MsgDebug.Add("获取当前行'产品'列当前版本的值:{0}",dr("产品",DataRowVersion.Current))
Proj.MsgDebug.Add("获取当前行'产品'列默认版本的值:{0}",dr("产品",DataRowVersion.Default))
If dr.RowState=DataRowState.Added Then
    Proj.MsgDebug.Add("当前行为新增行,没有Original版本,访问此版本会报错。")
Else
    Proj.MsgDebug.Add("获取当前行'产品'列Original版本的值:{0}",dr("产品",DataRowVersion.Original))
End If
'在实际使用中,无法获得DataRowVersion.Proposed的值

'新增行如何获得各版本的值
dr=tbl.DataTableHelp.AddNew()
dr("产品")="新增行" '修改当前新增行产品列的值
Proj.MsgDebug.Add("获取当前行行状态的版本:{0}",dr.RowState.ToString())
Proj.MsgDebug.Add("获取当前行'产品'列当前版本的值:{0}",dr("产品",DataRowVersion.Current))
Proj.MsgDebug.Add("获取当前行'产品'列默认版本的值:{0}",dr("产品",DataRowVersion.Default))
If dr.RowState=DataRowState.Added Then
    Proj.MsgDebug.Add("当前行为新增行,没有Original版本,访问此版本会报错。")
Else
    Proj.MsgDebug.Add("获取当前行'产品'列Original版本的值:{0}",dr("产品",DataRowVersion.Original))
End If

'返回结果:根据ColData对象返回对应列的值:产品03
'返回结果:根据列序号返回对应列的值:2
'返回结果:根据列名称返回对应列的值:业务员01
'返回结果:当前行'产品'列原本的数据:产品02
'返回结果:获取当前行行状态的版本:Modified
'返回结果:获取当前行'产品'列当前版本的值:新值
'返回结果:获取当前行'产品'列默认版本的值:新值
'返回结果:获取当前行'产品'列Original版本的值:产品02
'返回结果:获取当前行行状态的版本:Added
'返回结果:获取当前行'产品'列当前版本的值:新增行
'返回结果:获取当前行'产品'列默认版本的值:新增行
'返回结果:当前行为新增行,没有Original版本,访问此版本会报错。

C#
// 先定义变量获取表
SmGrid tbl = Proj.CurrentSmGrid;
// 定义ColData对象
ColData col = tbl.DataTableHelp.DataCols["产品"];
// 获得RowData对象
tbl.Position = 1; // 先定位到第二行
RowData dr = tbl.CurrentRowData; // 取到当前行对象

Proj.MsgDebug.Add("根据ColData对象返回对应列的值:{0}", dr[col]);
Proj.MsgDebug.Add("根据列序号返回对应列的值:{0}", dr[1]);
Proj.MsgDebug.Add("根据列名称返回对应列的值:{0}", dr["业务员"]);

// 查看修改后如何获得各版本的值
tbl.Position = 2; // 先定位到第二行
dr = tbl.CurrentRowData; // 重新获取当前行对象
Proj.MsgDebug.Add("当前行'产品'列原本的数据:{0}", dr["产品"].ToString());
dr["产品"] = "新值"; // 修改当前行产品列的值
Proj.MsgDebug.Add("获取当前行行状态的版本:{0}", dr.RowState.ToString());
Proj.MsgDebug.Add("获取当前行'产品'列当前版本的值:{0}", dr["产品", DataRowVersion.Current]);
Proj.MsgDebug.Add("获取当前行'产品'列默认版本的值:{0}", dr["产品", DataRowVersion.Default]);
if (dr.RowState == DataRowState.Added)
    Proj.MsgDebug.Add("当前行为新增行,没有Original版本,访问此版本会报错。");
else
    Proj.MsgDebug.Add("获取当前行'产品'列Original版本的值:{0}", dr["产品", DataRowVersion.Original]);
// 在实际使用中,无法获得DataRowVersion.Proposed的值

// 新增行如何获得各版本的值
dr = tbl.DataTableHelp.AddNew();
dr["产品"] = "新增行"; // 修改当前新增行产品列的值
Proj.MsgDebug.Add("获取当前行行状态的版本:{0}", dr.RowState.ToString());
Proj.MsgDebug.Add("获取当前行'产品'列当前版本的值:{0}", dr["产品", DataRowVersion.Current]);
Proj.MsgDebug.Add("获取当前行'产品'列默认版本的值:{0}", dr["产品", DataRowVersion.Default]);
if (dr.RowState == DataRowState.Added)
    Proj.MsgDebug.Add("当前行为新增行,没有Original版本,访问此版本会报错。");
else
    Proj.MsgDebug.Add("获取当前行'产品'列Original版本的值:{0}", dr["产品", DataRowVersion.Original]);

//返回结果:根据ColData对象返回对应列的值:产品03
//返回结果:根据列序号返回对应列的值:2
//返回结果:根据列名称返回对应列的值:业务员01
//返回结果:当前行'产品'列原本的数据:产品02
//返回结果:获取当前行行状态的版本:Modified
//返回结果:获取当前行'产品'列当前版本的值:新值
//返回结果:获取当前行'产品'列默认版本的值:新值
//返回结果:获取当前行'产品'列Original版本的值:产品02
//返回结果:获取当前行行状态的版本:Added
//返回结果:获取当前行'产品'列当前版本的值:新增行
//返回结果:获取当前行'产品'列默认版本的值:新增行
//返回结果:当前行为新增行,没有Original版本,访问此版本会报错。