|
using AngleSharp.DOM.Collections;
using AngleSharp.DOM.Css;
using System;
namespace AngleSharp.DOM.Html
{
/// <summary>
/// Represents the HTML tr element.
/// </summary>
public sealed class HTMLTableRowElement : HTMLElement
{
#region Constant
/// <summary>
/// The tr tag.
/// </summary>
internal const String Tag = "tr";
#endregion
#region ctor
internal HTMLTableRowElement()
{
_name = Tag;
}
#endregion
#region Properties
/// <summary>
/// Gets or sets the value of the alignment attribute.
/// </summary>
[DOM("align")]
public HorizontalAlignment Align
{
get { return ToEnum(GetAttribute("align"), HorizontalAlignment.Left); }
set { SetAttribute("align", value.ToString()); }
}
/// <summary>
/// Gets or sets the value of the vertical alignment attribute.
/// </summary>
[DOM("vAlign")]
public VerticalAlignment VAlign
{
get { return ToEnum(GetAttribute("valign"), VerticalAlignment.Middle); }
set { SetAttribute("valign", value.ToString()); }
}
/// <summary>
/// Gets or sets the value of the background color attribute.
/// </summary>
[DOM("bgColor")]
public String BgColor
{
get { return GetAttribute("bgcolor"); }
set { SetAttribute("bgcolor", value); }
}
/// <summary>
/// Gets the assigned table cells.
/// </summary>
[DOM("cells")]
public HTMLCollection Cells
{
get { return _children.QuerySelectorAll("td,th"); }
}
/// <summary>
/// Gets the index in the logical order and not in document order.
/// </summary>
[DOM("rowIndex")]
public Int32 RowIndex
{
get
{
var parent = ParentElement;
while (parent != null && !(parent is HTMLTableElement))
parent = parent.ParentElement;
if (parent is HTMLTableElement)
return ((HTMLTableElement)parent).Rows.IndexOf(this);
return 0;
}
}
/// <summary>
/// Gets the index of this row, relative to the current section starting from 0.
/// </summary>
[DOM("sectionRowIndex")]
public Int32 SectionRowIndex
{
get
{
var parent = ParentElement;
while (parent != null && !(parent is HTMLTableSectionElement))
parent = parent.ParentElement;
if (parent is HTMLTableSectionElement)
return ((HTMLTableSectionElement)parent).Rows.IndexOf(this);
return 0;
}
}
#endregion
#region Internal properties
/// <summary>
/// Gets if the node is in the special category.
/// </summary>
protected internal override Boolean IsSpecial
{
get { return true; }
}
#endregion
#region Methods
/// <summary>
/// Insert an empty TD cell into this row. If index is -1 or equal to the number
/// of cells, the new cell is appended.
/// </summary>
/// <param name="index">The place to insert the cell, starting from 0.</param>
/// <returns>The inserted table cell.</returns>
[DOM("insertCell")]
public HTMLTableCellElement InsertCell(Int32 index)
{
var cell = Cells[index];
var newCell = OwnerDocument.CreateElement(HTMLTableCellElement.NormalTag) as HTMLTableCellElement;
if (cell != null)
InsertBefore(newCell, cell);
else
AppendChild(newCell);
return newCell;
}
/// <summary>
/// Deletes a cell from the current row.
/// </summary>
/// <param name="index">The index of the cell to delete, starting from 0. If the index is
/// -1 the last cell in the row is deleted.</param>
/// <returns>The current row.</returns>
[DOM("deleteCell")]
public HTMLTableRowElement DeleteCell(Int32 index)
{
var cells = Cells;
if (index == -1)
index = cells.Length - 1;
var cell = cells[index];
if (cell != null)
cell.Remove();
return this;
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.