/// <summary> /// 在指定位置插入行 /// </summary> /// <param name="index"></param> /// <param name="row"></param> public void InsertRowAt(int index, MTableRow row) { if (row.Length != iClm) { throw new Exception("row length is not equal to current table."); } if (index >= iRow) { AddRow(row); return; } else if (index < 0) { index = 0; } Array.Resize <MTableRow>(ref oRows, iRow + 1); for (int i = iRow; i > index; i--) { oRows[i] = oRows[i - 1]; } oRows[index] = row; iRow++; }
/// <summary> /// 删除指定行 /// </summary> /// <param name="index"></param> public void RemoveRowAt(int index) { if (index < 0 || index >= iRow || iRow < 1) { throw new Exception("index is not valid"); } MTableRow[] tRows = new MTableRow[iRow - 1]; for (int i = 0; i < iRow; i++) { if (i < index) { tRows[i] = oRows[i]; } else if (i > index) { tRows[i - 1] = oRows[i]; } } iRow -= 1; oRows = new MTableRow[iRow]; for (int i = 0; i < iRow; i++) { oRows[i] = tRows[i]; } }
/// <summary> /// 构造一张空表 /// </summary> /// <param name="iRowCnt"></param> /// <param name="iColumnCnt"></param> public MTable(int iRowCnt, int iColumnCnt) { if (iRowCnt < 1 || iColumnCnt < 1) { throw new Exception("Row or column count must more than 0."); } iRow = iRowCnt; iClm = iColumnCnt; oRows = new MTableRow[iRowCnt]; for (int i = 0; i < iRow; i++) { oRows[i] = new MTableRow(iClm); } }
/// <summary> /// 从指定字符串构造表 /// </summary> /// <param name="val"></param> public void FromString(string val) { if (val.Trim() == "") { iRow = 0; iClm = 0; oRows = new MTableRow[0]; return; } string[] arrRow = StringTool.MSplit(val, ";"); int iTemp = 0; for (int i = 0; i < arrRow.Length; i++) { if (i == 0) { iTemp = StringTool.MSplit(arrRow[i], ",").Length; } else if (StringTool.MSplit(arrRow[i], ",").Length != iTemp) { throw new Exception("Argument is not valid"); } } iClm = iTemp; iRow = arrRow.Length; oRows = new MTableRow[iRow]; for (int i = 0; i < iRow; i++) { oRows[i] = new MTableRow(arrRow[i]); } }
/// <summary> /// 在表的末尾添加一行 /// </summary> /// <param name="oRow"></param> public void AddRow(MTableRow oRow) { Array.Resize <MTableRow>(ref oRows, iRow + 1); oRows[iRow] = oRow; iRow++; }
/// <summary> /// 在表的末尾添加一行 /// </summary> /// <param name="val"></param> public void AddRow(string val) { Array.Resize <MTableRow>(ref oRows, iRow + 1); oRows[iRow] = new MTableRow(val); iRow++; }
public MTableRow(MTableRow other) : base(other) { }