我想在将在SharePoint上下文中运行的网页中使用MultipleLookupField控件。我想知道是否有人会帮我一个例子,它逐步显示如何使用控件两个显示两个SPField集合。
答案 0 :(得分:2)
我不完全确定我理解你的问题,尤其是关于显示两个SPField集合的问题。很抱歉,如果这是一个完全不同的问题的答案!
无论如何,这是在Web部件中使用MultipleLookupField的快速演示演练。
创建团队网站。将一些任务添加到任务列表中。还将文档放在共享文档库中。在共享文档库中创建一个新列;称之为“相关”,将其作为“任务”列表的“标题”字段中的“查找”,并允许多个值。
现在创建一个Web部件,执行所有常用的样板,然后添加:
Label l;
MultipleLookupField mlf;
protected override void CreateChildControls()
{
base.CreateChildControls();
SPList list = SPContext.Current.Web.Lists["Shared Documents"];
if (list != null && list.Items.Count > 0)
{
LiteralControl lit = new LiteralControl("Associate tasks to " +
list.Items[0].Name);
this.Controls.Add(lit);
mlf = new MultipleLookupField();
mlf.ControlMode = SPControlMode.Edit;
mlf.FieldName = "Related";
mlf.ItemId = list.Items[0].ID;
mlf.ListId = list.ID;
mlf.ID = "Related";
this.Controls.Add(mlf);
Button b = new Button();
b.Text = "Change";
b.Click += new EventHandler(bClick);
this.Controls.Add(b);
l = new Label();
this.Controls.Add(l);
}
}
void bClick(object sender, EventArgs e)
{
l.Text = "";
foreach (SPFieldLookupValue val in (SPFieldLookupValueCollection)mlf.Value)
{
l.Text += val.LookupValue.ToString() + " ";
}
SPListItem listitem = mlf.List.Items[0];
listitem["Related"] = mlf.Value;
listitem.Update();
mlf.Value = listitem["Related"];
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
EnsureChildControls();
}
当然,这是边缘荒谬的 - 一切都是硬编码的,根本没有错误处理,它没有任何用处 - 但它只是作为一个快速演示。现在构建并部署此Web部件,并将其实例添加到您团队网站的主页;它应该允许您获取和设置与库中第一个文档关联的任务。
指向按钮末尾的奇怪位单击处理程序,我们从mlf.Value中读取一个值,然后再将其写回,如果您希望UI与实际列表值保持同步,则似乎是必需的。尝试省略bClick的最后一行,看看我的意思。这让我在最后一个小时左右疯了,我希望另一位评论者可以提出更好的方法......
答案 1 :(得分:0)
嗯。在我的工作正常,所以让我们看看我们是否可以弄清楚你的设置是如何不同的......
看起来它在填充控件时遇到了麻烦;我的第一个猜测是,这是因为代码对它所谈论的列表做了如此多的假设。你能检查一下你有一个简单的vanilla团队网站吗(假设这些名字是区分大小写的):
然后添加webpart。手指交叉......
答案 2 :(得分:0)
嗯。好吧,我还在试图打破我...所以我去了layouts目录并创建了一个文件foo.aspx。这是:
<%@ Page Language="C#" Inherits="System.Web.UI.Page" MasterPageFile="~/_layouts/simple.master" %>
<%@ Register Tagprefix="foo" Namespace="Foople" Assembly="Foople, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5"%>
<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<foo:WebPart1 id="fred" runat="server" />
<foo:WebPart1a id="barney" runat="server" />
</asp:Content>
WebPart1是之前的webpart。 WebPart1a是完全相同的代码,但是在直接从WebControl而不是从WebPart继承的类中。
它工作正常,除了回发上的安全验证问题,我不能打扰调试。
将主页更改为~masterurl / default.master,我将foo.aspx上传到共享文档库,它也可以正常工作 - WebControl和WebPart都运行正常,安全问题也消失了
所以我很茫然。虽然我确实注意到这个页面带有一个模糊的可能是bug,也在SPFolder.get_ContentTypeOrder()中:http://forums.msdn.microsoft.com/en-US/sharepointdevelopment/thread/63baf273-7f36-453e-8293-26417759e2e1/
你有可能发布你的代码吗?