将列表中的值检索到 SharePoint Webpart 中的 Gridview?

Posted

技术标签:

【中文标题】将列表中的值检索到 SharePoint Webpart 中的 Gridview?【英文标题】:Retrieve the values from a list to Gridview in SharePoint Webpart? 【发布时间】:2012-03-10 18:40:09 【问题描述】:

我有一个名为 Registration 的列表,以下是我的列表中的列。

类型

员工姓名:个人或组 经理姓名:个人或组 练习名称:单行文字 程序名称:查找 状态:选择 先决条件:多行文本

现在我创建了一个 Web 部件,它将所有这些值显示为网格视图 这是我为 webpart.cs

编写的代码
protected void Page_Load(object sender, EventArgs e)

    gridViewManager.DataSource = GetData();
    gridViewManager.DataBind();


#region Try2
DataTable GetData()

    SPSite oSiteCollection = SPContext.Current.Site;
    SPWeb oWeb = oSiteCollection.OpenWeb();
    SPList oSPList = oWeb.Lists["Registration"];
    SPListItemCollection oSPListItemCollection = oSPList.Items;
    DataTable dt = new DataTable();            
    try
                  
        dt.Columns.Add("Employee Name", typeof(String));
        dt.Columns.Add("Manager Name", typeof(String));
        dt.Columns.Add("Practice Name", typeof(String));
        dt.Columns.Add("Program Name", typeof(LookupField));
        //dt.Columns.Add("Program Name", typeof(String));
        dt.Columns.Add("Status", typeof(String));
        dt.Columns.Add("Prerequisite", typeof(String));               
        DataRow dataRow;                 
        foreach (SPListItem oSplistItem in oSPListItemCollection)
        
            dataRow = dt.Rows.Add();
            dataRow["Employee Name"] = oSplistItem["Employee Name"].ToString();
            dataRow["Manager Name"] = oSplistItem["Manager Name"].ToString();
            dataRow["Practice Name"] = oSplistItem["Practice Name"].ToString();
            dataRow["Program Name"] = oSplistItem["Program Name"].ToString();
            dataRow["Status"] = oSplistItem["Status"].ToString();
            dataRow["Prerequisite"] = oSplistItem["Prerequisite"].ToString();
        
        return dt;
    
    catch (Exception ex)
    
        System.Diagnostics.Debug.WriteLine("Managers Approval" + ex.Message.ToString());
        return dt;
    

#endregion Try2

这是用户控制代码的代码:

<SharePoint:SPGridView runat="server" ID="gridViewManager" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="Employee Name" HeaderText="Employee Name" />
        <asp:BoundField DataField="Manager Name" HeaderText="ManagerName" />
        <asp:BoundField DataField="Practice Name" HeaderText="Practice Name" />
        <asp:BoundField DataField="Program Name" HeaderText="Program Name" />
        <asp:BoundField DataField="Status" HeaderText="Current Status" />
        <asp:BoundField DataField="Prerequisite" HeaderText="Prerequisite" />
        <asp:TemplateField HeaderText="">
            <ItemTemplate>
                <asp:Button ID="BtnEdit" runat="server" Text="Take Action" />
                <asp:Button ID="Button1" runat="server" Text="View Details" />
            </ItemTemplate>
            <HeaderTemplate>
            </HeaderTemplate>
        </asp:TemplateField>
    </Columns>
</SharePoint:SPGridView>

现在我正面临这两行代码的问题

dt.Columns.Add("Program Name", typeof(LookupField));
dt.Columns.Add("Prerequisite", typeof(String)); 

如果我不使用它,那么这个 webpart 可以完美运行。但我也想显示这些字段。我该怎么做?

【问题讨论】:

我希望将代码集成为图片而不是文本。因为看起来您可以访问它。此外,还会有更易读的突出显示,而不仅仅是粗体。 我很抱歉Shegit。我尝试添加为代码本身,但无法在此处提交 html 代码 我决定浪费一些时间为你做了。我在这里看到了许多语言作为代码示例,所以我想知道你想输入什么,有一条消息拒绝它。 (需要一分钟,直到有人同行评审。) 关于主题:你确定你的问题是因为这两个?因为您有dt.Columns.Add("Program Name", typeof(LookupField));dt.Columns.Add("Program Name", typeof(String));,您在其中声明了两个名称相同但类型不同的列。如果您只将dt.Columns.Add("Prerequisite", typeof(String) 作为一种缩小异常抛出者,会发生什么? 是的,我尝试了两种方法在 gridview 中显示该字段,但它不起作用。一个是注释行.. 【参考方案1】:

您是否看过让 SharePoint API 使用 SPListItemCollection.GetDataTable() 为您生成 DataTable?

【讨论】:

【参考方案2】:

您遇到的问题是空值。如果对象为空,.ToString() 将失败。我假设所有其他字段都没有任何空值(至少在您的查询中),但您遇到问题的字段却有。你有几个选择。您可以检查该值是否为空,如果不是,则放入一个空字符串,对于许多已经是字符串的字段,您可以直接转换它们,而不是 .ToString-ing 它们。您可以使用处理空值的 Convert.ToString(object) 。我可以继续使用其他几个选项,但我认为您可以从这里开始。

【讨论】:

以上是关于将列表中的值检索到 SharePoint Webpart 中的 Gridview?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将列表视图添加到 Sharepoint 2013 C# 中的所有列表

从 SharePoint 2010 中的不同网站集中检索列表项

如何使用oData和JavaScript从Sharepoint 2013中的列表检索数据

JavaScript 如何使用oData和JavaScript从Sharepoint 2013中的列表中检索数据

Sharepoint 2010 客户端对象模型 - 将列表数据分配给网格视图

将数据从 Microsoft 365 中的 SharePoint 中的列表发送到外部 API