我正在使用TADODataSet(D7).
我没有使用我的DataSet在设计模式下创建持久字段.
dsItems.CommandText := 'select ID, ItemName, UserIDCreate from Items';
dsUsers.CommandText := 'select ID, LoginName from Users'; // lookup dataset
Run Code Online (Sandbox Code Playgroud)
如果我双击dsItems并"添加所有文件",然后单击"新建文件"并定义我的查找字段,一切正常.结果dsItems应包含:ID, ItemName, UserIDCreate, LoginName_Lookup
如何在设计时避免完成所有这些操作,并在打开DataSet之后(或不确定)之前添加查找字段.
换句话说:如何模拟"添加所有文件"然后"新建文件"以在运行时添加查找文件?
注意:
从IDE运行John的代码时出现异常.尝试打开DataSet时发生异常:EOleException with message 'An unknown error has occured'.
function TCustomADODataSet.LocateRecord (ADODB.pas) 排队 if FieldCount = 1 then FLookupCursor.Find...
我接受答案,因为已编译的程序正在运行.
如果有人在IDE中运行表单时可以验证是否获得异常,那将是很好的.
我创建了一个内容类型TypeA,它具有基本ListB的查找字段.然后我创建一个使用TypeA的ListA.一切都是以编程方式创建的.
当ListA的'添加新项'模态应该加载时抛出异常.它只发生在ListB中有项目的情况下.如果ListB为空,则listA的'添加新项'模态加载,并且正确显示ListB的查找字段(None)
堆栈跟踪:
System.ArgumentException: Value does not fall within the expected range.
at Microsoft.SharePoint.SPFieldMap.GetColumnNumber(String strFieldName, Boolean bThrow)
at Microsoft.SharePoint.SPListItemCollection.GetColumnNumber(String groupName, Boolean bThrowException)
at Microsoft.SharePoint.SPListItemCollection.GetRawValue(String fieldname, Int32 iIndex, Boolean bThrow)
at Microsoft.SharePoint.SPListItem.GetValue(SPField fld, Int32 columnNumber, Boolean bRaw, Boolean bThrowException)
at Microsoft.SharePoint.SPListItem.GetValue(String strName, Boolean bThrowException)
at Microsoft.SharePoint.SPListItem.get_Item(String fieldName)
at Microsoft.SharePoint.WebControls.LookupField.get_DataSource()
at Microsoft.SharePoint.WebControls.LookupField.CreateChildControls()
at System.Web.UI.Control.EnsureChildControls()
at Microsoft.SharePoint.WebControls.BaseFieldControl.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive() …Run Code Online (Sandbox Code Playgroud)