/// <summary>
        /// 
        /// </summary>
        public static void PasteClipBoardToInsertionRow(IGrid grid)
        {
            string data = m_copyDataForPaste;
            if (!string.IsNullOrEmpty(data))
            {
                InsertionRow row = grid.GetInsertionRow();
                if (row != null)
                {
                    row.BeginEdit();
                    string[] ss = data.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                    if (ss.Length < 2)
                        return;
                    Dictionary<int, string> columnNames = new Dictionary<int,string>();
                    string[] sss = ss[0].Split(new char[] { '\t' }, StringSplitOptions.None);
                    {
                        for (int j = 0; j < sss.Length; ++j)
                        {
                            columnNames[j] = sss[j];
                        }
                    }
                    for (int i = 1; i < ss.Length; )
                    {
                        sss = ss[i].Split(new char[] { '\t' }, StringSplitOptions.None);
                        for (int j = 0; j < sss.Length; ++j)
                        {
                            try
                            {
                                if (grid.Columns[columnNames[j]] == null)
                                    continue;

                                if (string.IsNullOrEmpty(sss[j]))
                                {
                                    row.Cells[columnNames[j]].Value = null;
                                }
                                else
                                {
                                    object r = ConvertHelper.ChangeType(sss[j], grid.Columns[columnNames[j]].DataType);
                                    row.Cells[columnNames[j]].Value = r;
                                }
                            }
                            catch (Exception ex)
                            {
                                ExceptionProcess.ProcessWithNotify(ex);
                            }
                        }
                        break;
                    }
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        public static void CancelEditCurrentDataRow(IGrid grid)
        {
            // ��enter Edit Mode �󣬲��Ҳ����ڵ��б�����ִ���
            try
            {
                Xceed.Grid.CellRow row = grid.CurrentRow as Xceed.Grid.CellRow;
                if (row != null && row.IsBeingEdited)
                {
                    row.CancelEdit();
                }

                InsertionRow insertionRow = grid.GetInsertionRow();
                if (insertionRow != null) //��һ����Edit && insertionRow.IsBeingEdited)
                {
                    insertionRow.CancelEdit();

                    // bug in xceed?
                    foreach (Xceed.Grid.Cell cell in insertionRow.Cells)
                    {
                        cell.ResetReadOnly();
                    }
                }
            }
            catch (Exception ex)
            {
                ExceptionProcess.ProcessWithResume(ex);
            }
        }