【发布时间】:2011-09-10 03:08:53
【问题描述】:
我在 VS2010 中创建了一个自定义编辑表单作为简单的 aspx 页面(继承自 LayoutsPageBase),它使用 SharePoint Web 控件 LookupField 控件来显示来自自定义类型的值的下拉列表
表单正确显示,下拉框包含预期的值范围
ControlMode 设置为与 FormContext 相同(尽管我已尝试将其显式设置为 Edit)
但在回发时,下拉列表的值未设置 - 所选项目索引设置为 -1
如何正确使用 LookupField 控件从用户那里获取选定的值?
可能是因为我在 aspx 中以声明方式添加控件,然后在页面加载事件中从 SPContext 设置列表 ID 等? - 参见下面的代码 sn-p(不是最漂亮的,只是试图让它在这一点上工作):
来自aspx:
<SharePoint:FileField ID="FileNameText" InputFieldLabel="Name" runat="server" ControlMode="Display"/><br />
<SharePoint:LookupField ID="FeedType" runat="server" />
<SharePoint:TextField ID="FeedStatus" runat="server" />
....
在页面加载后面的代码中:
if (!IsPostBack)
{
SPItem feedFileItem = SPContext.Current.Item;
FileNameText.ControlMode = SPContext.Current.FormContext.FormMode;
FileNameText.ListId = SPContext.Current.ListId;
FileNameText.ItemId = SPContext.Current.ItemId;
FileNameText.FieldName = "Name";
FeedType.ControlMode = SPControlMode.Edit;
FeedType.ListId = SPContext.Current.ListId;
FeedType.ItemId = SPContext.Current.ItemId;
FeedType.FieldName = "FeedType";
FeedStatus.ItemContext = SPContext.Current;
FeedStatus.RenderContext = SPContext.Current;
FeedStatus.ControlMode = SPControlMode.Edit;
FeedStatus.ListId = SPContext.Current.ListId;
FeedStatus.ItemId = SPContext.Current.ItemId;
FeedStatus.FieldName = "FeedStatus";
}
更新
好的,我设法通过在 CreateChildControls 的覆盖后面的代码中添加控件来使我的表单工作 - 这与我在网上看到的大多数示例一致。
但是有人可以解释为什么我的方法不起作用以及我是否可以在 aspx 中以声明性方式完成这一切?
【问题讨论】:
-
好像回发是在重新绑定列表,可以发代码吗?
标签: sharepoint sharepoint-2010