首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用SPQuery结果填充HTML表

如何用SPQuery结果填充HTML表
EN

Stack Overflow用户
提问于 2015-11-29 22:31:09
回答 2查看 318关注 0票数 0

我刚刚开始玩SP2010的开发,所以我完全是个乞丐。我使用如下代码创建了简单的控制台应用程序:

代码语言:javascript
复制
using (SPSite currentSite = new SPSite("http://win-e9840laitme"))
{
    using (SPWeb currentWeb = currentSite.OpenWeb())
    {
        SPList myList = currentWeb.Lists["List1"];

        string currentUserName = currentWeb.CurrentUser.Name;

        SPQuery queryInformationAboutCurrentUser = new SPQuery();
        queryInformationAboutCurrentUser.Query = "<Where>" +
                                                  "<Eq><FieldRef Name='EmployeeName'/><Value Type='Text'>" + currentUserName + "</Value></Eq>" +
                                                  "</Where>";

        List<EmployeeInfo> listEmployeeInfo = new List<EmployeeInfo>();
        SPListItemCollection collectionEmployee = myList.GetItems(queryInformationAboutCurrentUser);

        foreach (SPListItem info in collectionEmployee)
        {
            EmployeeInfo eInfo = new EmployeeInfo();
            eInfo.Deparment = info["Office"].ToString();
            listEmployeeInfo.Add(eInfo);

        }
        foreach (EmployeeInfo eI in listEmployeeInfo)
        {
            SPQuery querySameOffice = new SPQuery();
            querySameOffice.Query = "<Where>" +                                                           
                                    "<Eq><FieldRef Name='Office'/><Value Type='Choice'>" + eI.Deparment + "</Value></Eq>" +                                                           
                                    "</Where>";
            SPListItemCollection collectionEmployeeDisplay = myList.GetItems(querySameOffice);
            foreach (SPListItem item in collectionEmployeeDisplay)
            {
                Console.WriteLine(item["EmployeeName"].ToString() + " " + item["PhoneNumber"].ToString() + "\n");
            }
        }
    }
}

现在,我想在sharepoint中使用这段代码,而不是将SPQuery的结果放在控制台上,而是静态地填充HTML表(如果可能的话,不要使用JS或Jquery )。我创建了sp项目并添加了ApplicationPage。我的想法是使用StringBuilder和类似的东西:

代码语言:javascript
复制
StringBuilder html = new StringBuilder();


html.Append("<table border = '1'>");
//Building the Header row.
html.Append("<tr>");            
html.Append("<th>");
html.Append("EmployeeName");
html.Append("</th>");
html.Append("<th>");
html.Append("PhoneNumber");
html.Append("</th>");
html.Append("</tr>");

在最后一个foreach循环中,这个代码:

代码语言:javascript
复制
foreach (SPListItem item in collectionEmployeeDisplay)
{
    html.Append("<tr>");
    html.Append("<td>");
    html.Append(item["EmployeeName"].ToString());
    html.Append("</td>");

    html.Append("<td>");
    html.Append(item["PhoneBook"].ToString());
    html.Append("</td>");

    html.Append("</tr>");
}

//Table end.
html.Append("</table>");
//Append the HTML string to Placeholder.
PlaceHolder1.Controls.Add(new Literal { Text = html.ToString() });

我相信有更优雅的解决办法,如果你现在请给我的想法.Thank你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-01 10:38:10

我找到了一个solution.First,我们需要将Repeater添加到PlaceHolderMain中:

代码语言:javascript
复制
<asp:Repeater ID="rptEmployees" runat="server">
    <HeaderTemplate>
        <table border="1" style="width:70%">
            <tr>
                <td>Employee Name</td>
                <td>Phone Number</td>
                <td>Position</td>
            </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><%# Eval("EmployeeName") %></td>
            <td><%# Eval("PhoneNumber") %></td>
            <td><%# Eval("Position") %></td>
        </tr>            
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>


</asp:Repeater>

而不是创建另一个类并将此代码添加到最终循环中:

代码语言:javascript
复制
foreach (SPListItem item in collectionEmployeeDisplay)
                    {
                        DisplayEmployee dE = new DisplayEmployee();
                        dE.EmployeeName = item[Sol.PB1.Fields.EmployeeName].ToString();
                        dE.PhoneNumber = item[Sol.PB1.Fields.PhoneNumber].ToString();
                        dE.Position = item[Sol.PB1.Fields.Position].ToString();
                        display.Add(dE);
                    }

                    rptEmployees.DataSource = display;
                    rptEmployees.DataBind();
                }
票数 0
EN

Stack Overflow用户

发布于 2015-12-01 22:14:23

不能使用XSLT转换将SPQuery结果转换为HTML。参见将XSLT转换应用于DataSet示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33988937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档