DataGridView使用

這段時間需要使用DataGridView,故來總結一下
首先需要做的是連接數(shù)據(jù)庫取胎,獲得數(shù)據(jù)

        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();

這邊就不多說了,我的項目里是從類里取得數(shù)據(jù)

dataGridView1.DataSource = 類名;

(1)修改行頭和寬度

        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;

(2)添加CheckBox選擇框

        DataGridViewCheckBoxColumn column1 = new DataGridViewCheckBoxColumn();
        {
            column1.HeaderText = "選擇";
            column1.Name = "check1";
            column1.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            column1.FlatStyle = FlatStyle.Standard;
            //顯示選擇框的三種狀態(tài)
            column1.ThreeState = true;
        }
        dataGridView1.Columns.Insert(0, column1);//插入到最前面

這里說明DataGridView可以添加6中按鈕控件,除了CheckBox還有Button、TextBox城看、Image、Link和ComboBox杏慰,用法都是一樣的

(3)隱藏新增行和列頭

        dataGridView1.RowHeadersVisible = false;
        dataGridView1.AllowUserToAddRows = false;

(4)設置字體居中顯示

        dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

(5)設定包括Header和所有單元格的列寬和行高自動調(diào)整

        GV_Visit.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
        GV_Visit.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

(6)設置行首和左上角的文字

        dataGridView1.Rows[0].HeaderCell.Value = "第1行";
        /dataGridView1.TopLeftHeaderCell.Value = "左上角";

(7)取得選定的行测柠、列、單元格

        //選定的單元格
        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);
        }

(8)刪除行缘滥、列

        //刪除指定行
        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);
            }
        }

(9)因為我的項目里新增了CheckBox選擇框轰胁,我想實現(xiàn)單選需要在CellContentClick事件中說明

    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)     //查找被選擇的數(shù)據(jù)行 
            {
                checkCell.Value = false;
            }
            else
            {
                continue;
            }
        }
    }

(10)獲取到選擇的行的數(shù)據(jù)

        string IData = "";
        int count = Convert.ToInt32(dataGridView1.Rows.Count.ToString());//獲取到總行數(shù)
        for (int i = 0; i < count; i++)
        {
            //如果DataGridView是可編輯的,將數(shù)據(jù)提交朝扼,否則處于編輯狀態(tài)的行無法取到 
            dataGridView1.EndEdit();
            //獲取到選擇的行數(shù)
            DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)GV_Visit.Rows[i].Cells["check1"];
            Boolean flag = Convert.ToBoolean(checkCell.Value);
            if (flag == true)//查找被選擇的數(shù)據(jù)行 
            {
                for (int j = 1; j < dataGridView1.ColumnCount; j++)
                {
                    //從 DataGridView中獲取某行某列的數(shù)據(jù)項
                    string data = dataGridView1.Rows[i].Cells[j].Value.ToString().Trim();
                    IData += data + ",";
                }
                //如果只需要取某一列的值赃阀,那就不需要遍歷列了
                //string data = dataGridView1.Rows[i].Cells[列數(shù)].Value.ToString().Trim();
            }
        }
        if (!string.IsNullOrEmpty(IData))
        {
            MessageBox.Show(IData.TrimEnd(','));
        }

(11)獲得列名為“**”的列

因為在項目中,經(jīng)常有關于性別或其他的擎颖,在數(shù)據(jù)庫中儲存為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 = "女";
            }
        }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肠仪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子备典,更是在濱河造成了極大的恐慌异旧,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件提佣,死亡現(xiàn)場離奇詭異吮蛹,居然都是意外死亡荤崇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門潮针,熙熙樓的掌柜王于貴愁眉苦臉地迎上來术荤,“玉大人,你說我怎么就攤上這事每篷“昶荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵焦读,是天一觀的道長子库。 經(jīng)常有香客問我,道長矗晃,這世上最難降的妖魔是什么仑嗅? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮张症,結果婚禮上仓技,老公的妹妹穿的比我還像新娘。我一直安慰自己俗他,他們只是感情好脖捻,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拯辙,像睡著了一般郭变。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涯保,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天诉濒,我揣著相機與錄音,去河邊找鬼夕春。 笑死未荒,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的及志。 我是一名探鬼主播片排,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼速侈!你這毒婦竟也來了率寡?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤倚搬,失蹤者是張志新(化名)和其女友劉穎冶共,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡捅僵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年家卖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庙楚。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡上荡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馒闷,到底是詐尸還是另有隱情酪捡,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布窜司,位于F島的核電站沛善,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏塞祈。R本人自食惡果不足惜金刁,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望议薪。 院中可真熱鬧尤蛮,春花似錦、人聲如沸斯议。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼御。三九已至坯临,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恋昼,已是汗流浹背看靠。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留液肌,地道東北人挟炬。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像嗦哆,于是被迫代替她去往敵國和親谤祖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容