我有一个由列表填充的DataTable(从csv文件填充,虽然不是很重要)。此DataTable由DataGridView呈现,允许用户编辑它。
// Initialise DataTable
DataTable dt = new DataTable();
// Add columns to DataTable
dt.Columns.Add("Weight Category");
dt.Columns.Add("United Kingdom");
dt.Columns.Add("Rest of Europe");
dt.Columns.Add("World Wide");
// Add rows to DataTable
dt.Rows.Add(weightCategory[0], ukCosts[0], roeCosts[0], wwCosts[0]);
dt.Rows.Add(weightCategory[1], ukCosts[1], roeCosts[1], wwCosts[1]);
dt.Rows.Add(weightCategory[2], ukCosts[2], roeCosts[2], wwCosts[2]);
dt.Rows.Add(weightCategory[3], ukCosts[3], roeCosts[3], wwCosts[3]);
dt.Rows.Add(weightCategory[4], ukCosts[4], roeCosts[4], wwCosts[4]);
dt.Rows.Add(weightCategory[5], ukCosts[5], roeCosts[5], wwCosts[5]);
return dt;
然后将更改保存到原始csv文件中。我想验证单元格,以便用户只能键入数字/ 1小数点。我目前使用以下CellValidating事件执行此操作,该事件会阻止用户离开单元格。问题是我的第一列包含文字。这个列是只读的,我不希望它完全被验证,有没有办法跳过它/禁止验证?否则我会陷入无法离开这些牢房的境地。
private void dgvDeliveryCosts_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
double output;
if (!double.TryParse(e.FormattedValue.ToString(), out output))
{
MessageBox.Show("Please enter a numeric value.");
e.Cancel = true;
}
if (string.IsNullOrEmpty(e.FormattedValue.ToString()))
{
MessageBox.Show("Cell cannot be left blank.");
e.Cancel = true;
}
}
答案 0 :(得分:0)
在column index上添加支票:
private void dgvDeliveryCosts_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 0) // zero-based
{
return;
}
// Validate..