Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 在控件中动态设置ListId_Sharepoint_Listview - Fatal编程技术网

Sharepoint 在控件中动态设置ListId

Sharepoint 在控件中动态设置ListId,sharepoint,listview,Sharepoint,Listview,是否有一种方法可以在ListView控件中动态设置ListId字段。我们无法保证我们感兴趣的列表在安装之间具有一致的GUID。该列表是作为我们不控制的站点模板的一部分部署的。我已尝试使用PreInit事件设置变量,请参见列表guid:部分。如果删除ListView标记,我会看到正确的GUID打印出来。因此,我正在正确收集GUID。但是,具有以下消息Guid的listview控件错误应该包含32位数字和4个破折号。这告诉我标签没有得到变量集。这是正确的吗?是否有其他方法指定要使用的列表 这能做到吗

是否有一种方法可以在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();