如何将自定义列表的方向从垂直方向变为水平方向

How can I shift the orientation of a custom list from vertical to horizontal

我有一个自定义列表 Web 部件,我想在自定义页面上显示团队成员。我不想垂直列出每个名称(名称只是我要显示的字段),我想先水平显示名称,然后垂直显示以填充页面上的区域。

这仅供显示,通常只有 5 到 50 条记录需要显示。我现在可以使用代码,但我需要在不影响 SharePoint 中的任何其他 table 的情况下增加列之间的间距。我的代码是:

<script type="text/javascript">
        SP.SOD.executeFunc('sp.js', 'SP.ClientContext', DisplayMembers);
        function DisplayMembers()
        {retrieveListItems();}

var sectionName = GetUrlKeyValue('Section');
var siteUrl = _spPageContextInfo.siteServerRelativeUrl ;
var collListItem
//console.log("Section="+sectionName);

function retrieveListItems() {
console.log("retrieveListItems");
    var clientContext = new SP.ClientContext.get_current();
    var oList = clientContext.get_web().get_lists().getByTitle('Contacts');
    var camlQuery = new SP.CamlQuery();
    camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'Section\'/><Value Type=\'Text\'>'+ sectionName +'</Value></Eq></Where></Query></View>'); 

    collListItem = oList.getItems(camlQuery);
    clientContext.load(collListItem);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onmemQuerySucceeded),
                                    Function.createDelegate(this, this.onmemQueryFailed));
}
function onmemQuerySucceeded(sender, args) {
    var listItemEnumerator = collListItem.getEnumerator();
    var displaytable = "<H1>Members</H1><table>"
    var tblWidth = 3;
    var currentWidth = 1;
    while (listItemEnumerator.moveNext()) {
        //console.log("counter currentWidth="+currentWidth);

        var oListItem = listItemEnumerator.get_current();
        //console.log("Name="+oListItem.get_item('Title'));
        if (currentWidth == 1){
            displaytable +="<tr><td>" + oListItem.get_item('Title') +"</td><td>"
        } else if (currentWidth < tblWidth){
            displaytable += oListItem.get_item('Title') +"</td><td>"
        } else {
            displaytable += oListItem.get_item('Title') +"</td><tr>"
        }
        if (currentWidth == tblWidth) {
            currentWidth = 1;
        } else {
            currentWidth++;
        }
    }
    displaytable+="</table>"
    $("#pid").html(displaytable)
}
function onmemQueryFailed(sender, args) {
alert('Error: ' + args.get_message() + '\n' + args.get_stackTrace());
}
</script>
<p id="pid"></p>

我相信你需要的是flexbox。将您的自定义 CSS 注入您的 SharePoint 页面,您就可以开始了。

这里有一些可能有用的链接

https://css-tricks.com/snippets/css/a-guide-to-flexbox/

https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/use-css-to-brand-pages

@Steve Harvancik,

我相信您正在寻找弹性布局。下面的flex box是否满足要求?

.main {  
  display: flex;
  flex-wrap: wrap;
  flex-direction: row;
  background-color: rgba(86, 61, 124, 0.15);
  border: 1px solid rgba(86, 61, 124, 0.15);  
}

.item {
  background-color: rgba(86, 61, 124, 0.15);
  padding: 0.5rem;  
}
<div class="main">
  <div class="item">Flex item 1</div>
  <div class="item">Flex item 2</div>
  <div class="item">Flex item 3</div>
  <div class="item">Flex item 4</div>
  <div class="item">Flex item 5</div>
  <div class="item">Flex item 6</div>
  <div class="item">Flex item 7</div>
  <div class="item">Flex item 8</div>     
</div>

BR