DataGridView遍历选定行各列是否选中
/*遍历选定行各列是否选中Ctrl+鼠标点选不连续的单元格*/
foreach (DataGridViewCell 单元格 in 数据列表.Rows[数据列表.CurrentCell.RowIndex].Cells)
{
if (单元格.Selected) 选中 += 单元格.ColumnIndex;
}
合成查询语句
/// <summary>遍历选定行各列是否选中Ctrl+鼠标点选不连续的单元格</summary>
/// <param name="多字符">要查询的多条件字符串数组</param>
/// <returns>合成数据表筛选条件语句</returns>
string 遍历选列查询(string[] 多字符)
{
string 查询语句 = "";
foreach (DataGridViewCell 单元格 in 数据列表.Rows[数据列表.CurrentCell.RowIndex].Cells)
if (单元格.Selected)
{
foreach (string 值 in 多字符) 查询语句 += 数据列表.Columns[单元格.ColumnIndex].Name + " Like '%" + 值 + "%' And ";
查询语句 = 查询语句.TrimEnd(" And ".ToArray()) + " Or ";
}
return 查询语句 = 查询语句.TrimEnd(" Or ".ToArray());
}
配合树状点击
private void 分类树_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
数据列表.CurrentCell.ErrorText = string.Empty;
if (e.Node.Level == 0 && e.Node.Checked == false) e.Node.Collapse(); else e.Node.ExpandAll();
string[] 选路径 = 获取区间内容(e.Node.FullPath, 字符串转数组("\\")).Select(值 => 值.Length > 4 ? 值[0].ToString() : 值).ToArray();
数据表搜索(遍历选列查询(new string[] { 选路径[0], 选路径[选路径.Length - 1] }), 数据列表.CurrentCell.ColumnIndex);
}
string 遍历选列查询(string[] 多字符, bool 选 = true)
{
string 查询语句 = "";
foreach (DataGridViewCell 单元格 in 数据列表.SelectedCells)
if (选)
{
foreach (string 值 in 多字符) 查询语句 += 数据列表.Columns[单元格.ColumnIndex].Name + " Like '%" + 值 + "%' And ";
查询语句 = 查询语句.TrimEnd(" And ".ToArray()) + " Or ";
}
else 查询语句 += 单元格.ColumnIndex + ",";
return 查询语句 = 查询语句.TrimEnd(" Or ".ToArray()).TrimEnd(',');
}