如何将时间戳添加到datagridview

时间:2015-02-27 09:54:42

标签: c# xml datetime datagridview

我有一个xml文件,用户将加载到datagridview并写入该文件。这一切都很好。在xml上我有datestamp列 将自动加载日期,它还必须更新用户的时间 从其他单元格编辑。我昨天尝试了很多例子,但我没有提供有效的解决方案,也没有我提出的问题。今天我创建了一个类来尝试更新我的列,但它没有工作

当我从CellEndEdit调试时,我的类抛出错误“对象引用未设置为对象的实例”。 ,我甚至不能进入我的班级,看看它是错误的地方。

问题:如何在编辑或写入文件时自动更新时间?

我的代码

我的datestamp列

private DataTable GetDataTableFromDataGridview(DataGridView _grid)
{
    {
        var _oDataTable = new DataTable();
        object[] cellValues = new object[_grid.Columns.Count];
        _oDataTable.Columns.Add("DateStamp", typeof(DateTime));

        foreach (DataGridViewRow row in _grid.Rows)
        {
            for (int i = 0; i < row.Cells.Count; i++)
            {
                cellValues[i] = row.Cells[i].Value;
            }

            _oDataTable.Rows.Add(cellValues.ToArray());
        }

        return _oDataTable;
    }
}

private void Gridview_Output_CellEndEdit(object sender,  DataGridViewCellEventArgs e)
{
    try
    {
        _UpdateTime.UpdateTimeNow();
    }
}

我的班级

namespace Project
{
    class UpdateTime
    {
        public UpdateTime()
        {
        }

        private Regex _dateRegex = new Regex(@"(?<=\[DateStamp\]).*?(?=\[/DateStamp\])");
        public string _DateFormat = "yyyy/dd/MM HH:mm:ss";
        private DateTime _date;
        private XElement _datenodes;

        public string DateStamp
        {
            get
            {
                return _date.ToString(_DateFormat); 
            }
        }

        public void UpdateTimeNow()
        {
            _date = DateTime.Now;
            DateTime _dt;
            this._datenodes.Value = string.Format("[DateStamp]{3}[/DateStamp]",this._date.ToString(_DateFormat, CultureInfo.InvariantCulture));
            if (DateTime.TryParseExact(_dateRegex.Match(this._datenodes.Value).Value, _DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out _dt))
            {
                this._date = _dt;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这为我做了工作......谢谢大家

   private void Gridview_Output_RowLeave(object sender, DataGridViewCellEventArgs e)
    {
        try
        {

            if (Gridview_Output.Columns[e.ColumnIndex].Name == "ValueOut")
            {
                if (Gridview_Output.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue.ToString().Length > 0)
                {
                    string datetime = DateTime.Now.ToString(_DateFormat);
                    Gridview_Output.Rows[e.RowIndex].Cells[3].Value = datetime;
                }
            }