如何限制 Sharepoint 2010 WebPart 中 HtmlTable 中单元格的宽度?

Posted

技术标签:

【中文标题】如何限制 Sharepoint 2010 WebPart 中 HtmlTable 中单元格的宽度?【英文标题】:How can I restrict the width of cells in an HtmlTable in a Sharepoint 2010 WebPart? 【发布时间】:2015-07-14 03:09:27 【问题描述】:

我想限制 Sharepoint 2010 WebPart 中 htmlTableCells 的宽度。

当我在表格中只有一行时,我可以这样做:

var row1 = new HtmlTableRow();

var cellColTitle1 = new HtmlTableCell();
cellColTitle1.Width = "88px";
cellColTitle1.Style.Add("text-align", "center");
row1.Cells.Add(cellColTitle1);

这是我得到的,很好:

...但是当我有多行时它不起作用 - 单元格宽度太宽,即使我已将它们全部设置为“88”:

这是上下文中的代码(第 3 行和第 4 行的代码应该与第 2 行的代码几乎相同,但我将其全部粘贴为“完全公开”):

private HtmlTable GetSection5Table()

    HtmlTable dynamicTable = new HtmlTable();
    dynamicTable.Border = 2;

    // Create Row 1
    var row1 = new HtmlTableRow();

    var cellColTitle1 = new HtmlTableCell();
    cellColTitle1.Width = "88px";
    cellColTitle1.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle1);
    var cellColTitle2 = new HtmlTableCell();
    cellColTitle2.Width = "88px";
    cellColTitle2.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle2);
    var cellColTitle3 = new HtmlTableCell();
    cellColTitle3.Width = "88px";
    cellColTitle3.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle3);
    var cellColTitle4 = new HtmlTableCell();
    cellColTitle4.Width = "88px";
    cellColTitle4.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle4);
    var cellColTitle5 = new HtmlTableCell();
    cellColTitle5.Width = "88px";
    cellColTitle5.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle5);
    var cellColTitle6 = new HtmlTableCell();
    cellColTitle6.Width = "88px";
    cellColTitle6.Style.Add("text-align", "center");
    row1.Cells.Add(cellColTitle6);

    var indexStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Index"
    ;
    cellColTitle1.Controls.Add(indexStr);
    var fundStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Fund"
    ;
    fundStr.Style.Add("text-align", "center");
    cellColTitle2.Controls.Add(fundStr);
    var orgStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Organization"
    ;
    orgStr.Style.Add("text-align", "center");
    cellColTitle3.Controls.Add(orgStr);
    var accountStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Account"
    ;
    accountStr.Style.Add("text-align", "center");
    cellColTitle4.Controls.Add(accountStr);
    var activityStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Activity"
    ;
    activityStr.Style.Add("text-align", "center");
    cellColTitle5.Controls.Add(activityStr);
    var amountStr = new Label
    
        CssClass = "finaff-webform-field-label",
        Text = "Amount"
    ;
    amountStr.Style.Add("text-align", "center");
    cellColTitle6.Controls.Add(amountStr);
    dynamicTable.Rows.Add(row1); 

    //// Create row 2
    var row2 = new HtmlTableRow();

    var cellColIndex1 = new HtmlTableCell();
    cellColIndex1.Width = "88px";
    row2.Cells.Add(cellColIndex1);
    var cellColFund1 = new HtmlTableCell();
    cellColFund1.Width = "88px";
    row2.Cells.Add(cellColFund1);
    var cellColOrg1 = new HtmlTableCell();
    cellColOrg1.Width = "88px";
    row2.Cells.Add(cellColOrg1);
    var cellColAccount1 = new HtmlTableCell();
    cellColAccount1.Width = "88px";
    row2.Cells.Add(cellColAccount1);
    var cellColActivity1 = new HtmlTableCell();
    cellColActivity1.Width = "88px";
    row2.Cells.Add(cellColActivity1);
    var cellColAmount1 = new HtmlTableCell();
    cellColAmount1.Width = "88px";
    row2.Cells.Add(cellColAmount1);

    boxIndex1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"//,
        //Width = 88 //ADJUSTED_TEXTBOX_WIDTH
    ;
    cellColIndex1.Controls.Add(boxIndex1);
    boxFund1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColFund1.Controls.Add(boxFund1);
    boxOrganization1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColOrg1.Controls.Add(boxOrganization1);
    boxAccount1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAccount1.Controls.Add(boxAccount1);
    boxActivity1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColActivity1.Controls.Add(boxActivity1);
    boxAmount1 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAmount1.Controls.Add(boxAmount1);

    dynamicTable.Rows.Add(row2);

    // Row 3
    var row3 = new HtmlTableRow();

    var cellColIndex2 = new HtmlTableCell();
    cellColIndex2.Width = "88px";
    row3.Cells.Add(cellColIndex2);
    var cellColFund2 = new HtmlTableCell();
    cellColFund2.Width = "88px";
    row3.Cells.Add(cellColFund2);
    var cellColOrg2 = new HtmlTableCell();
    cellColOrg2.Width = "88px";
    row3.Cells.Add(cellColOrg2);
    var cellColAccount2 = new HtmlTableCell();
    cellColAccount2.Width = "88px";
    row3.Cells.Add(cellColAccount2);
    var cellColActivity2 = new HtmlTableCell();
    cellColActivity2.Width = "88px";
    row3.Cells.Add(cellColActivity2);
    var cellColAmount2 = new HtmlTableCell();
    cellColAmount2.Width = "88px";
    row3.Cells.Add(cellColAmount2);

    boxIndex2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColIndex2.Controls.Add(boxIndex2);
    boxFund2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColFund2.Controls.Add(boxFund2);
    boxOrganization2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColOrg2.Controls.Add(boxOrganization2);
    boxAccount2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAccount2.Controls.Add(boxAccount2);
    boxActivity2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColActivity2.Controls.Add(boxActivity2);
    boxAmount2 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAmount2.Controls.Add(boxAmount2);
    dynamicTable.Rows.Add(row3);

    // Row 4
    var row4 = new HtmlTableRow();

    var cellColIndex3 = new HtmlTableCell();
    cellColIndex3.Width = "88px";
    row4.Cells.Add(cellColIndex3);
    var cellColFund3 = new HtmlTableCell();
    cellColFund3.Width = "88px";
    row4.Cells.Add(cellColFund3);
    var cellColOrg3 = new HtmlTableCell();
    cellColOrg3.Width = "88px";
    row4.Cells.Add(cellColOrg3);
    var cellColAccount3 = new HtmlTableCell();
    cellColAccount3.Width = "88px";
    row4.Cells.Add(cellColAccount3);
    var cellColActivity3 = new HtmlTableCell();
    cellColActivity3.Width = "88px";
    row4.Cells.Add(cellColActivity3);
    var cellColAmount3 = new HtmlTableCell();
    cellColAmount3.Width = "88px";
    row4.Cells.Add(cellColAmount3);

    boxIndex3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColIndex3.Controls.Add(boxIndex3);
    boxFund3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColFund3.Controls.Add(boxFund3);
    boxOrganization3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColOrg3.Controls.Add(boxOrganization3);
    boxAccount3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAccount3.Controls.Add(boxAccount3);
    boxActivity3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColActivity3.Controls.Add(boxActivity3);
    boxAmount3 = new TextBox()
    
        CssClass = "finaff-webform-field-input"
    ;
    cellColAmount3.Controls.Add(boxAmount3);

    dynamicTable.Rows.Add(row4);

    return dynamicTable;

为什么 1 行有效,而多行无效?后续行的代码与初始行的代码基本相同。

【问题讨论】:

【参考方案1】:

原来我也必须指定文本框的宽度。所以这些:

boxIndex1 = new TextBox()

    CssClass = "finaff-webform-field-input"
;

...不得不变成这样:

boxIndex1 = new TextBox()

    CssClass = "finaff-webform-field-input",
    Width = 88
;

现在整个shebang看起来应该是这样的。

更新

或者,更迷人(对不起,优雅):

const int TEXTBOX_WIDTH = 88;
const String CELL_WIDTH = "88px";
. . .
var cellColTitle1 = new HtmlTableCell();
cellColTitle1.Width = CELL_WIDTH;
. . .
// Create row 2
. . .
boxIndex1 = new TextBox()

    CssClass = "finaff-webform-field-input",
    Width = TEXTBOX_WIDTH
;

【讨论】:

以上是关于如何限制 Sharepoint 2010 WebPart 中 HtmlTable 中单元格的宽度?的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 文件大小限制

SharePoint:如何在SharePoint 2013限制多个网站集的Search Result

如何限制排在SharePoint列表中的号码?

SharePoint 2010 - 使用循环工作流创建列表项 - 限制为5?

Sharepoint:限制caml查询中的结果

SharePoint 2010:根据组修剪页面内容