我是编程的初学者。
我创建了一个sql查询来填充DataGridView
,我在Column[0]
一个CheckBox
列中添加了。我创建了检查事件。但我不知道如何向前迈进。我想做
第一步:添加一个检查完成按钮和一个事件,仅显示选中的列。
第二步:所有选中的行以单元格1(名称)和单元格2(ID)以某种方式打印。
第三步:我想创建一个模板,在矩形或某个对象中将此名称和ID打印为A4格式。
因为我是新来的,所以我需要很多帮助!
提前致谢!
ps:所有步骤对我来说都是一个很大的帮助!
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (string.Compare(dataGridView1.CurrentCell.OwningColumn.Name, "Checked") == 0)
{
bool checkBoxStatus = Convert.ToBoolean(dataGridView1.CurrentCell.EditedFormattedValue);
//"CheckBoxColumn" column value is checked or not.
if (checkBoxStatus)
{
MessageBox.Show("1");//for check it works or not
}
else
{
MessageBox.Show("0");//for check it works or not
}
}
}
答案 0 :(得分:1)
要检测已检查的行,当您的第一列为DataGridViewCheckBoxColumn
时,您可以使用以下代码:
var checkedRows = this.dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(row => (bool?)row.Cells[0].Value == true)
.ToList();
对于其余问题,您可以使用以下任一选项:
选项1:创建RDLC Report
如果您使用DataTable
或业务对象作为网格模型,则只需创建RDLC报告并将选中的行传递给报告并打印报告。
选项2:使用PrintDocument
要打印,请使用PrintDocument
并处理PrintPage
事件,并将打印逻辑和代码放在那里。要触发打印事件,只需在代码中的某处调用printDocument1.Print()
即可。
您可以循环checkedRows
并使用e.Graphics.DrawString
打印每行的值。
例如:
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
//Find all checked rows
var allCheckedRows = this.dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(row => (bool?)row.Cells[0].Value == true)
.ToList();
//create a stringBuilder that will contain the string for all checked rows
var builder = new StringBuilder();
//For each checked row, create string presentation of row and add to output stringBuilder
allCheckedRows.ForEach(row =>
{
//Create an array of all cell value of a row to then concatenate them using a separator
var cellValues = row.Cells.Cast<DataGridViewCell>()
.Where(cell => cell.ColumnIndex > 0)
.Select(cell => string.Format("{0}", cell.Value))
.ToArray();
//Then concatenate values using ", " as separator, and added to output
builder.AppendLine(string.Join(", ", cellValues));
});
//Print the output string
e.Graphics.DrawString(builder.ToString(),
this.myDataGridView.Font,
new SolidBrush(this.dataGridView1.ForeColor),
new RectangleF(0, 0, this.printDocument1.DefaultPageSettings.PrintableArea.Width, this.printDocument1.DefaultPageSettings.PrintableArea.Height));
}
答案 1 :(得分:0)
向DataGridView添加按钮:
DataGridViewButtonColumn editButton = new DataGridViewButtonColumn();
editButton.HeaderText = "Edit";
editButton.Text = "Edit";
editButton.UseColumnTextForButtonValue = true;
editButton.Width = 80;
dbgViewObj.Columns.Add(editButton);
修改强>
您可以从前一个创建一个新的DataTable
并迭代for循环以检查复选框的状态,并使用dgv.Rows.RemoveAt(index)
方法清除未检查的行。然后使用{{1清除复选框列本身。