我尝试将字段的defaultvalue属性设置为Guid.NewGuid()但是每个创建的项目都具有相同的guid,所以我猜Guid.NewGuid()被存储为默认值,而不是每次都运行。
实现此目的的唯一方法是将事件处理程序添加到OnAdded的列表中吗?
答案 0 :(得分:2)
我假设您正在使用单行文本字段。此类字段的标准默认值始终为常量,您无法通过对象模型分配变量或函数。所有这一切都是分配函数特定调用的静态结果。
虽然文本字段可以支持计算的默认值,但它使用与计算列相同的函数,这些函数不支持随机数。
您最好的选择是使用事件处理程序,我也建议使用ItemAdding而不是ItemAdded。当然,您将分配到properties.AfterProperties["fieldname"]
而不是field.DefaultValue
。
答案 1 :(得分:1)
如果您通过代码创建字段并设置field.DefaultValue = Guid.NewGuid(),这将运行Guid.NewGuid()并将返回的Guid存储为默认值 这是运行以下代码的例子:
Guid newGuid = Guid.NewGuid();
string newGuidString = newGuid.ToString();
field.DefaultValue = newGuidString;
我不知道除了使用事件处理程序之外,您可以使用任何方法设置字段以在项目创建时生成新的Guid。
应该可以使用field来生成一个随机数.DefaultValue =“RANDBETWEEN(10,20)”;但我没有测试过这个