我有一个包含3列的datagridview:发票ID,价格和复选框。
如果单击复选框,则该行的价格变为0。现在正在发生。
但是当我取消选中复选框价格应该是这样的。但它仍然是零。下面是我的cellcontent点击代码。如果未选中复选框,我怎样才能获得之前的价格?
private void grvItems_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var senderGrid = (DataGridView)sender;
DataGridViewRow row = this.grvItems.CurrentRow;
if (e.RowIndex >= 0)
{
if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn &&
e.RowIndex >= 0)
{
if (e.ColumnIndex == grvItems.Columns["UnderWarranty"].Index)
{
string returnAmt = lblReturnAmountVal.Text;
bool isCheked = (bool)grvItems.Rows[e.RowIndex].Cells["UnderWarranty"].EditedFormattedValue;
if (isCheked)
{
grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = "0.00";
lblReturnAmountVal.Text = "0.00";
}
else
{
}
grvItems.EndEdit();
}
}
}
}
答案 0 :(得分:0)
您是否尝试过CheckedChanged事件?在Winforms上并使用应该有用的复选框。未经测试的代码如下:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
value = 0;
}
else
{
// whatever other logic should happen
}
}
答案 1 :(得分:0)
如果您想恢复原始数据值,则需要在某处存储。
您可以随时使用单元格的Tag
属性:
DataGridViewCell cell = grvItems.Rows[e.RowIndex].Cells["PRICE"];
if (isCheked)
{
cell.Tag = cell.Value;
cell.Value = "0.00";
lblReturnAmountVal.Text = "0.00";
}
else
{
// use your cell's datatype here!! VVV
if (cell.Tag != null) cell.Value = cell.Tag as decimal;
}