system.data.datatable 中的 newrow()方法是怎么实现的?internal void InsertRow(DataRow row, int proposedID, int pos, bool fireEvent)
{
    Exception deferredException = null;
    bool flag;
    if (row == null)
    {
        throw ExceptionBuilder.ArgumentNull("row");
    }
    if (row.Table != this)
    {
        throw ExceptionBuilder.RowAlreadyInOtherCollection();
    }
    if (row.rowID != -1)
    {
        throw ExceptionBuilder.RowAlreadyInTheCollection();
    }
    row.BeginEdit();
    int tempRecord = row.tempRecord;
    row.tempRecord = -1;
    if (proposedID == -1)
    {
        proposedID = this.nextRowID;
    }
    if (flag = this.nextRowID <= proposedID)
    {
        this.nextRowID = proposedID + 1;
    }
    try
    {
        try
        {
            row.rowID = proposedID;
            this.SetNewRecordWorker(row, tempRecord, DataRowAction.Add, false, pos, fireEvent, out deferredException);
        }
        catch
        {
            if (flag && (this.nextRowID == (proposedID + 1)))
            {
                this.nextRowID = proposedID;
            }
            row.rowID = -1;
            row.tempRecord = tempRecord;
            throw;
        }
        if (deferredException != null)
        {
            throw deferredException;
        }
        if (this.EnforceConstraints && !this.inLoad)
        {
            int count = this.columnCollection.Count;
            for (int i = 0; i < count; i++)
            {
                DataColumn column = this.columnCollection[i];
                if (column.Computed)
                {
                    column.CheckColumnConstraint(row, DataRowAction.Add);
                }
            }
        }
    }
    finally
    {
        row.ResetLastChangedColumn();
    }
}上面是代码  盼望懂的朋友 来讲讲。

解决方案 »

  1.   

    错了 不是newrow()! 是 addrow() 不好意思!
      

  2.   

     DataTable dt = new DataTable();
                dt.Columns.Add("标题名");            DataRow row = dt.NewRow();
                row[0] = "121";            dt.Rows.Add(row);
      

  3.   

    其实 我是看到 datatable 的源码之后 发现 Row  和 column 都是 数组 所以我很好奇 他是怎么动态的添加 行 和 列的,我贴的代码也是datatable的源代码,可惜没人理我。
    算了 分就给楼上的2位了。