System.Data.DataTable.ImportRow C# (CSharp) Method

ImportRow() public method

public ImportRow ( DataRow row ) : void
row DataRow
return void
        public void ImportRow(DataRow row)
        {
            long logScopeId = DataCommonEventSource.Log.EnterScope("<ds.DataTable.ImportRow|API> {0}", ObjectID);
            try
            {
                int oldRecord = -1, newRecord = -1;

                if (row == null)
                {
                    return;
                }

                if (row._oldRecord != -1)
                {
                    oldRecord = _recordManager.ImportRecord(row.Table, row._oldRecord);
                }
                if (row._newRecord != -1)
                {  // row not deleted
                    if (row.RowState != DataRowState.Unchanged)
                    { // not unchanged, it means Added or modified
                        newRecord = _recordManager.ImportRecord(row.Table, row._newRecord);
                    }
                    else
                    {
                        newRecord = oldRecord;
                    }
                }

                if (oldRecord != -1 || newRecord != -1)
                {
                    DataRow targetRow = AddRecords(oldRecord, newRecord);

                    if (row.HasErrors)
                    {
                        targetRow.RowError = row.RowError;

                        DataColumn[] cols = row.GetColumnsInError();

                        for (int i = 0; i < cols.Length; i++)
                        {
                            DataColumn col = targetRow.Table.Columns[cols[i].ColumnName];
                            targetRow.SetColumnError(col, row.GetColumnError(cols[i]));
                        }
                    }
                }
            }
            finally
            {
                DataCommonEventSource.Log.ExitScope(logScopeId);
            }
        }

Usage Example

 /// <summary>
 /// 菜单列表项
 /// </summary>
 /// <param name="menutb">level=0的一级菜单</param>
 /// <param name="subMenutb">level=1的二级菜单</param>
 /// <param name="parentMenutb">isparent=1的具有二级菜单的一级菜单</param>
 public static void GetMenuItemBLL(out DataTable menutb,out DataTable subMenutb,out DataTable parentMenutb)
 {
     DataTable dt = Front_DataCollectorDAL.GetMenuItemDAL();
     menutb = dt.Clone();//存放level=0的1层菜单
     subMenutb = dt.Clone();//存放level=1的子菜单
     parentMenutb = dt.Clone();//存放isparent=1的1层菜单
     if (dt!=null && dt.Rows.Count>0)
     {
         for (int i = 0; i < dt.Rows.Count; i++)
         {
             DataRow dr = dt.Rows[i];
             if (dr["menu_level"].ToString()=="0")
             {
                 menutb.ImportRow(dr);
                 if (dr["menu_isparent"].ToString()=="1")
                 {
                     parentMenutb.ImportRow(dr);
                 }
             }
             else if(dr["menu_level"].ToString()=="1")
             {
                 subMenutb.ImportRow(dr);
             }
         }
     }
 }
All Usage Examples Of System.Data.DataTable::ImportRow
DataTable