这段时间需要使用DataGridView,故来总结一下
首先需要做的是连接数据库,获得数据
string str_con = @"Data Source=.;Integrated Security=sspi;Initial Catalog=testDB;";
string sql = "select * from Person";
SqlConnection conn = new SqlConnection(str_con);
conn.Open();
SqlCommand comm = new SqlCommand(sql, conn);
SqlDataAdapter da = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
da.Fill(ds, "Person");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Person";
conn.Close();
这边就不多说了,我的项目里是从类里取得数据
dataGridView1.DataSource = 类名;
dataGridView1.Columns[0].HeaderText = "类别";
dataGridView1.Columns[1].HeaderText = "开始时间";
dataGridView1.Columns[2].HeaderText = "结束时间";
dataGridView1.Columns[0].Width = 80;
dataGridView1.Columns[1].Width = 150;
dataGridView1.Columns[2].Width = 150;
DataGridViewCheckBoxColumn column1 = new DataGridViewCheckBoxColumn();
{
column1.HeaderText = "选择";
column1.Name = "check1";
column1.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
column1.FlatStyle = FlatStyle.Standard;
//显示选择框的三种状态
column1.ThreeState = true;
}
dataGridView1.Columns.Insert(0, column1);//插入到最前面
这里说明DataGridView可以添加6中按钮控件,除了CheckBox还有Button、TextBox、Image、Link和ComboBox,用法都是一样的
dataGridView1.RowHeadersVisible = false;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
GV_Visit.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
GV_Visit.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView1.Rows[0].HeaderCell.Value = "第1行";
/dataGridView1.TopLeftHeaderCell.Value = "左上角";
//选定的单元格
foreach (DataGridViewCell c in dataGridView1.SelectedCells)
{
string cr = string.Format("{0},{1}", c.ColumnIndex, c.RowIndex);
listBox1.Items.Add("选定的单元格位置是:" + cr);
}
//选定的行/列
foreach (DataGridViewRow c in dataGridView1.SelectedRows)
{
listBox1.Items.Add("选定的行是:" + c.Index);
}
foreach (DataGridViewColumn c in dataGridView1.SelectedColumns)
{
listBox1.Items.Add("选定的列是:" + c.Index);
}
//删除指定行
dataGridView1.Columns.RemoveAt(0);
dataGridView1.Columns.Remove("Name");
//删除指定列
dataGridView1.Rows.RemoveAt(0);
//删除多行
foreach (DataGridViewRow r in dataGridView1.SelectedRows)
{
if (r.IsNewRow == false)
{
dataGridView1.Rows.Remove(r);
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int count = Convert.ToInt16(dataGridView1.Rows.Count.ToString());
for (int i = 0; i < count; i++)
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)dataGridView1.Rows[i].Cells["check1"];
Boolean flag = Convert.ToBoolean(checkCell.Value);
if (flag == true) //查找被选择的数据行
{
checkCell.Value = false;
}
else
{
continue;
}
}
}
string IData = "";
int count = Convert.ToInt32(dataGridView1.Rows.Count.ToString());//获取到总行数
for (int i = 0; i < count; i++)
{
//如果DataGridView是可编辑的,将数据提交,否则处于编辑状态的行无法取到
dataGridView1.EndEdit();
//获取到选择的行数
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)GV_Visit.Rows[i].Cells["check1"];
Boolean flag = Convert.ToBoolean(checkCell.Value);
if (flag == true)//查找被选择的数据行
{
for (int j = 1; j < dataGridView1.ColumnCount; j++)
{
//从 DataGridView中获取某行某列的数据项
string data = dataGridView1.Rows[i].Cells[j].Value.ToString().Trim();
IData += data + ",";
}
//如果只需要取某一列的值,那就不需要遍历列了
//string data = dataGridView1.Rows[i].Cells[列数].Value.ToString().Trim();
}
}
if (!string.IsNullOrEmpty(IData))
{
MessageBox.Show(IData.TrimEnd(','));
}
因为在项目中,经常有关于性别或其他的,在数据库中储存为0/1,在页面显示需要表示为男/女或真/假之类的
int num= dataGridView1.Columns["Gender"].Index;
//获得列名叫Gender的列的索引
//通过遍历所有的行,值为0则是男反之则为女
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (dataGridView1.Rows[i].Cells[num].Value.ToString().Trim() == "0")
{
dataGridView1.Rows[i].Cells[num].Value = "男";
}
else
{
dataGridView1.Rows[i].Cells[num].Value = "女";
}
}
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123