Sharepoint 在控件中动态设置ListId
是否有一种方法可以在ListView控件中动态设置ListId字段。我们无法保证我们感兴趣的列表在安装之间具有一致的GUID。该列表是作为我们不控制的站点模板的一部分部署的。我已尝试使用PreInit事件设置变量,请参见列表guid:部分。如果删除ListView标记,我会看到正确的GUID打印出来。因此,我正在正确收集GUID。但是,具有以下消息Guid的listview控件错误应该包含32位数字和4个破折号。这告诉我标签没有得到变量集。这是正确的吗?是否有其他方法指定要使用的列表 这能做到吗 示例代码如下:Sharepoint 在控件中动态设置ListId,sharepoint,listview,Sharepoint,Listview,是否有一种方法可以在ListView控件中动态设置ListId字段。我们无法保证我们感兴趣的列表在安装之间具有一致的GUID。该列表是作为我们不控制的站点模板的一部分部署的。我已尝试使用PreInit事件设置变量,请参见列表guid:部分。如果删除ListView标记,我会看到正确的GUID打印出来。因此,我正在正确收集GUID。但是,具有以下消息Guid的listview控件错误应该包含32位数字和4个破折号。这告诉我标签没有得到变量集。这是正确的吗?是否有其他方法指定要使用的列表 这能做到吗
<%@ Register TagPrefix="Sharepoint" ...details deleted.. %>
<br>
...stuff deleted.
<br>
<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
... more stuff deleted...
<p>list guid: <%=ListGuid %>
<Sharepoint:ListView ListId="<%=ListGuid %>" Enabled="true" runat="server" />
<p>
</asp:Content>
<script runat="server">
string ListGuid = string.Empty;
protected void Page_PreInit(object sender, EventArgs e)
{
SPSite Site = SPContext.Current.Site;
using (SPWeb HelpDesk = Site.OpenWeb("HelpDesk"))
{
SPList list = HelpDesk.Lists["Charge Numbers"];
ListGuid = list.ID.ToString();
}
}
</script>
我想你收到的错误信息告诉你出了什么问题。。。ToString正在将GUID转换为无效格式。tostring有一个重载
list.ID.ToString("N");
list.ID.ToString("D"); (this is the default)
list.ID.ToString("B");
list.ID.ToString("P");
。。。所有这些都可以试试像您这样将服务器端代码注入更多服务器端代码有点奇怪,似乎不太可能工作。SharePoint日志对其尝试加载的列表ID有何说明?我的猜测是,它并不是真的试图加载由您在ListGuid变量中设置的GUID表示的列表 与其试图强制某些全局ListGuid变量具有正确的guid,为什么不在应用程序页的加载事件处理程序中设置控件的ListId属性呢 在aspx文件中:
<SharePoint:ListView Id="lv" runat="server" />
在加载事件中:
SPList list = HelpDesk.Lists["Charge Numbers"];
Guid myguid = list.ID;
lv.ListId = myguid.ToString();
至少根据日志,D格式是它所要求的。我尝试了所有四种变体都没有成功。我不得不删除lv声明以避免编译器错误。谢谢你的指导,我把它拆下来就可以用了。谢谢
SPList list = HelpDesk.Lists["Charge Numbers"];
Guid myguid = list.ID;
lv.ListId = myguid.ToString();