我有一个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;
}
}
}
}
答案 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;
}
}