这段时间需要使用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 = \"女\";
}
}
上一篇:Using的使用
下一篇:《大话数据结构》读书笔记(一)