欧美日韩国产网暴台湾_白拍偷拍制服丝袜_国产麻豆日韩在线观看_精品欧美在线va天堂资源站_亚洲色成人WWW永久_免费高级毛片AV_精品國產av色一區二區深夜久久_亚洲乱码中文字幕av综合_一级做A爱片特黄在线观看_少妇免费亚洲综合

Previous topicNext topic
Help > 開發(fā)指南 > SanMuGrid平臺編程 > 主要對象 >
RowData

 

屬性

名稱 說明
BaseRow

返回當(dāng)前數(shù)據(jù)行的基礎(chǔ)DataRow對象.

DataTableHelp 返回當(dāng)前行所在的DatatableHelp對象.
Index 返回當(dāng)前行處于當(dāng)前視圖中的序列,這是為了方便取上一行數(shù)據(jù)。
Item (索引器)  返回當(dāng)前行指定列的值.
Locked 鎖定行.
NextRow 返回當(dāng)前行的后一行。此屬性只適合配合SmGrid表使用。在純后臺場景下會一直返回空值。
PreviousRow 返回當(dāng)前行的前一行。此屬性只適合配合SmGrid表使用。在純后臺場景下會一直返回空值。
HasErrors 判斷當(dāng)前行中是否包含錯誤信息。
RowState 返回當(dāng)前行的行狀態(tài).

方法

名稱 說明
AcceptChanges 接受此行的所有修改,使得保存的時候忽略此行。通常我們在窗體加載時對表中數(shù)據(jù)進(jìn)行一些初始化,比如我們添加一些輔助列、臨時列中有表達(dá)公式,這些數(shù)據(jù)不需要保存到數(shù)據(jù)庫后臺,僅作展示,但是修改里面的值的話,又改變了行當(dāng)前的狀態(tài)為已修改。這時我們就可以調(diào)用行的AcceptChanges方法,讓行狀態(tài)變?yōu)檎N葱薷牡臓顟B(tài)。這樣我們在執(zhí)行保存方法時,就不會感知到這行有觸發(fā)保存的需求。提高了效率。另外,DataTableHelp也有一個相同的方法,那個可以讓整個表中的所有行都接受當(dāng)前的值,而不去觸發(fā)保存的功能。主要在一些臨時表,不希望保存到數(shù)據(jù)庫后臺的場景使用。
RejectChanges 撤銷自打開文件或最近一次保存以來,對該行做出的修改。我們的右鍵菜單中的“還原”命令就是使用的此方法。主要就是一個反悔撤消錯誤修改的功能。
ClearErrors 清除該行所有列的錯誤信息.
GetColumnError 返回該行指定列的錯誤信息.
SetError 設(shè)置該行指定列的錯誤信息.
Clone 克隆行.將當(dāng)前行完全復(fù)制一份并新增到DataTableHelp中,并將復(fù)制行返回。
Delete 刪除當(dāng)前行
Remove 移除行.此方法只會從當(dāng)前已加載數(shù)據(jù)中移出,并不會從數(shù)據(jù)庫中刪除此行數(shù)據(jù)。
Save 保存行.
Load 重新加載當(dāng)前行.
Equals(RowData) 比較兩個行是否相等.
GetFilterByParameterCols(String) 根據(jù)篩選列,結(jié)合當(dāng)前行的數(shù)據(jù),獲得一個用于篩選的SQL篩選條件字符串。
GetFilterByPrimaryKey 根據(jù)主鍵,獲得一個能篩選出當(dāng)前行的篩選條件。
NextRowData 返回后一行指定列的值。
PreviousRowData 返回前一行指定列的值。
IsNull 返回當(dāng)前行指定列是否為空。
OriginalIsNull 當(dāng)前行的原始行是否為空.這跟dr.IsNull(dc,System.Data.DataRowVersion.Original)是同樣的效果.
OriginalValue 返回當(dāng)前行的最原始值.此值僅代表最后一次保存以來的值.
SQLLoadFile 從數(shù)據(jù)庫直接獲得二進(jìn)制文件.

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
If tbl Is Nothing Then Return
Dim dr As RowData=tbl.CurrentRowData
If dr Is Nothing Then Return

'先打印之前的行數(shù)據(jù)
Proj.MsgDebug.Add("之前的數(shù)據(jù):{0}",String.Join("|", dr.BaseRow.ItemArray))
Proj.MsgDebug.Add("之前的行狀態(tài):{0}",dr.RowState.ToString())
'修改其中一列的數(shù)據(jù)
dr("客戶")="修改值"
Proj.MsgDebug.Add("修改之后的數(shù)據(jù):{0}",String.Join("|", dr.BaseRow.ItemArray))
Proj.MsgDebug.Add("修改之后的行狀態(tài):{0}",dr.RowState.ToString())
'接受修改值
dr.AcceptChanges()
Proj.MsgDebug.Add("AcceptChanges之后的數(shù)據(jù):{0}",String.Join("|", dr.BaseRow.ItemArray))
Proj.MsgDebug.Add("AcceptChanges之后的行狀態(tài):{0}",dr.RowState.ToString())
'修改值
dr("產(chǎn)品")="新產(chǎn)品"
Proj.MsgDebug.Add("修改之后的數(shù)據(jù):{0}",String.Join("|", dr.BaseRow.ItemArray))
Proj.MsgDebug.Add("修改之后的行狀態(tài):{0}",dr.RowState.ToString())
'還原修改
dr.RejectChanges()
Proj.MsgDebug.Add("還原之后的數(shù)據(jù):{0}",String.Join("|", dr.BaseRow.ItemArray))
Proj.MsgDebug.Add("還原之后的行狀態(tài):{0}",dr.RowState.ToString())

'先保存當(dāng)前行的數(shù)據(jù),然后再從后臺數(shù)據(jù)庫中重新加載最新的值
dr.Load(True)
'不保存當(dāng)前修改,直接從后臺數(shù)據(jù)庫中重新加載最新的值
dr.Load(False)

'從當(dāng)前表中移除,但是并不從數(shù)據(jù)庫刪除
dr.Remove()
'重新獲得一個行
dr=tbl.DataTableHelp.DataRows(2)
'刪除行,但是此時還沒有真正從數(shù)據(jù)庫刪除,只有執(zhí)行了保存之后才會真正從數(shù)據(jù)庫刪除
dr.Delete()
'保存
dr.Save()

'表級別的保存
tbl.DataTableHelp.Save()

'返回結(jié)果:之前的數(shù)據(jù):|211|211|產(chǎn)品02|客戶02|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
'返回結(jié)果:之前的行狀態(tài):Unchanged
'返回結(jié)果:修改之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
'返回結(jié)果:修改之后的行狀態(tài):Modified
'返回結(jié)果:AcceptChanges之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
'返回結(jié)果:AcceptChanges之后的行狀態(tài):Unchanged
'返回結(jié)果:修改之后的數(shù)據(jù):|211|211|新產(chǎn)品|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
'返回結(jié)果:修改之后的行狀態(tài):Modified
'返回結(jié)果:還原之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
'返回結(jié)果:還原之后的行狀態(tài):Unchanged

C#
SmGrid tbl = Proj.CurrentSmGrid;
if (tbl == null)
    return;
RowData dr = tbl.CurrentRowData;
if (dr == null)
    return;

// 先打印之前的行數(shù)據(jù)
Proj.MsgDebug.Add("之前的數(shù)據(jù):{0}", string.Join("|", dr.BaseRow.ItemArray));
Proj.MsgDebug.Add("之前的行狀態(tài):{0}", dr.RowState.ToString());
// 修改其中一列的數(shù)據(jù)
dr["客戶"] = "修改值";
Proj.MsgDebug.Add("修改之后的數(shù)據(jù):{0}", string.Join("|", dr.BaseRow.ItemArray));
Proj.MsgDebug.Add("修改之后的行狀態(tài):{0}", dr.RowState.ToString());
// 接受修改值
dr.AcceptChanges();
Proj.MsgDebug.Add("AcceptChanges之后的數(shù)據(jù):{0}", string.Join("|", dr.BaseRow.ItemArray));
Proj.MsgDebug.Add("AcceptChanges之后的行狀態(tài):{0}", dr.RowState.ToString());
// 修改值
dr["產(chǎn)品"]="新產(chǎn)品";
Proj.MsgDebug.Add("修改之后的數(shù)據(jù):{0}", string.Join("|", dr.BaseRow.ItemArray));
Proj.MsgDebug.Add("修改之后的行狀態(tài):{0}", dr.RowState.ToString());
// 還原修改
dr.RejectChanges();
Proj.MsgDebug.Add("還原之后的數(shù)據(jù):{0}", string.Join("|", dr.BaseRow.ItemArray));
Proj.MsgDebug.Add("還原之后的行狀態(tài):{0}", dr.RowState.ToString());

// 先保存當(dāng)前行的數(shù)據(jù),然后再從后臺數(shù)據(jù)庫中重新加載最新的值
dr.Load(true);
// 不保存當(dāng)前修改,直接從后臺數(shù)據(jù)庫中重新加載最新的值
dr.Load(false);

// 從當(dāng)前表中移除,但是并不從數(shù)據(jù)庫刪除
dr.Remove();
// 重新獲得一個行
dr = tbl.DataTableHelp.DataRows[2];
// 刪除行,但是此時還沒有真正從數(shù)據(jù)庫刪除,只有執(zhí)行了保存之后才會真正從數(shù)據(jù)庫刪除
dr.Delete();
// 保存
dr.Save();

// 表級別的保存
tbl.DataTableHelp.Save();

//返回結(jié)果:之前的數(shù)據(jù):|211|211|產(chǎn)品02|客戶02|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
//返回結(jié)果:之前的行狀態(tài):Unchanged
//返回結(jié)果:修改之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
//返回結(jié)果:修改之后的行狀態(tài):Modified
//返回結(jié)果:AcceptChanges之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
//返回結(jié)果:AcceptChanges之后的行狀態(tài):Unchanged
//返回結(jié)果:修改之后的數(shù)據(jù):|211|211|新產(chǎn)品|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
//返回結(jié)果:修改之后的行狀態(tài):Modified
//返回結(jié)果:還原之后的數(shù)據(jù):|211|211|產(chǎn)品02|修改值|業(yè)務(wù)員03|29.5|468|13806|2019-03-18 0:00:00|210|2|一|93779.5
//返回結(jié)果:還原之后的行狀態(tài):Unchanged