Previous topicNext topic
Help > 使用指南 > 数据规范 > 01自动编号 >
代码手动获得自动编码

有些时候我们希望自己可以控制,写代码直接从后台获得相应的自动编号。为了让这个事情做起来来简单,我们平台提供了一个ReturnedAutoID对象,通过这个对象我们可以方便、高效地接收多个自动编号。我们可以一次只申请一个号码,也可以一次性申请多个号码。申请一个号码和申请上万个号码对服务器的性能和网络带宽的要求是一样的。因为ReturnedAutoID对象中存储的是各种参数,可以方便地从本地重新计算出我们需要的编号来。

如果只需要返回一个编号只需要访问ReturnedAutoID.FirstAutoID属性即可。如果要返回多个编号,则可以访问ReturnedAutoID的索引器ReturnedAutoID.Item(序号)来直接获得。

 Vb.Net
Dim auto As ReturnedAutoID=TableCenter.GetAutoIDByRuleName("员工编号")
'直接返回一个自动编码
Dim strAutoID As String=auto.FirstAutoID

'同时获取5个编号
auto=TableCenter.GetAutoIDByRuleName("员工编号",5)
Dim tbl As SmGrid=Proj.CurrentSmGrid
For i As Integer = 0 To 4
    tbl.View.ViewRows(i)("员工编号")=auto.Item(i) 
Next
'根据RuleID取自动编码
auto=TableCenter.GetAutoIDByRuleID("5454fdafdfdsafjkijdfsafd")
'根据RuleID取多个自动编码
auto=TableCenter.GetAutoIDByRuleID("5454fdafdfdsafjkijdfsafd",5)

'如果是一些带有列字段、表达公式的自动编码该如何获得呢?
Dim autoClient As AutoIDClient=New AutoIDClient(Nothing,"5454fdafdfdsafjkijdfsafd")
'将要生成编号的那一行RowData对象及表传入下面这个方法中,便于取数据并运行生成相应的临时参数
autoClient.RefreshDictionaryForParameters(tbl.CurrentRowData,tbl)
'从服务器端获得相应的自动编号。因为包含表达公式、字段的自动编码是于RowData强关联的,所以只能一个一个地取
auto=autoClient.GetAutoIDByRuleID(1)
'最终获得相应的编码
Dim strFuncID As String=auto.FirstAutoID

 C#
ReturnedAutoID auto = TableCenter.GetAutoIDByRuleName("员工编号");
// 直接返回一个自动编码
string strAutoID = auto.FirstAutoID;

// 同时获取5个编号
auto = TableCenter.GetAutoIDByRuleName("员工编号", 5);
SmGrid tbl = Proj.CurrentSmGrid;
for (int i = 0; i <= 4; i++)
{
    tbl.View.ViewRows[i]["员工编号"] = auto[i];
}
    
// 根据RuleID取自动编码
auto = TableCenter.GetAutoIDByRuleID("5454fdafdfdsafjkijdfsafd");
// 根据RuleID取多个自动编码
auto = TableCenter.GetAutoIDByRuleID("5454fdafdfdsafjkijdfsafd", 5);

// 如果是一些带有列字段、表达公式的自动编码该如何获得呢?
AutoIDClient autoClient = new AutoIDClient(null, "5454fdafdfdsafjkijdfsafd");
// 将要生成编号的那一行RowData对象及表传入下面这个方法中,便于取数据并运行生成相应的临时参数
autoClient.RefreshDictionaryForParameters(tbl.CurrentRowData, tbl);
// 从服务器端获得相应的自动编号。因为包含表达公式、字段的自动编码是于RowData强关联的,所以只能一个一个地取
auto = autoClient.GetAutoIDByRuleID(1);
// 最终获得相应的编码
string strFuncID = auto.FirstAutoID;