for ( int i = 0; i < dataGridView2.Rows.Count; i++) //行號(hào) { int j = i + 1; dataGridView2.Rows[i].HeaderCell.Value = j.ToString(); }通過(guò)上面的處理就可以簡(jiǎn)單的將行號(hào)添加了。簡(jiǎn)單的看來(lái)就是循環(huán)的給每一行添加,思路比較簡(jiǎn)潔。
第二種: 這種方式是使用DataGridview自帶的事件進(jìn)行處理,這個(gè)事件就是RowPostPaint,我們可以在該事件中添加相應(yīng)的處理方法就可以添加行號(hào)了,相應(yīng)的代碼為:1 PRivate void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) 2 { 3 System.Drawing. Rectangle rectangle = new System.Drawing.Rectangle (e.RowBounds.Location.X, 4 e.RowBounds.Location.Y, 5 dataGridView1.RowHeadersWidth - 4, 6 e.RowBounds.Height); 7 8 TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), 9 dataGridView1.RowHeadersDefaultCellStyle.Font,10 rectangle,11 dataGridView1.RowHeadersDefaultCellStyle.ForeColor,12 TextFormatFlags.VerticalCenter | TextFormatFlags .Right);13 }
這種方式也可以正常顯示。
上面兩種方式本人均通過(guò)實(shí)踐檢驗(yàn),均能正常顯示,其他的方式本人暫時(shí)沒(méi)有進(jìn)行研究。
2、高亮顯示某一行
在我們的實(shí)際項(xiàng)目中可能會(huì)有這樣的要求,當(dāng)某條數(shù)據(jù)滿足某個(gè)條件的時(shí)候?qū)⑦@條數(shù)據(jù)的整行或者當(dāng)前的單元格高亮顯示出來(lái),因?yàn)樵矶际且粯拥?,這里就記錄一下其中的一種情況。具體的實(shí)現(xiàn)是非常簡(jiǎn)單的,如果看了上面添加行號(hào)的話,這里就可以很好的理解了,原理都是一樣的,這是處理的屬性不同而已,具體為:1 for ( int i = 0; i < dataGridView2.Rows.Count; i++) //行號(hào)2 {3 if (dataGridView2.Rows[i].Cells["FLAG" ].Value.ToString() == "2") {4 this.dataGridView2.Rows[i].DefaultCellStyle.BackColor= Color.Red;5 }6 }其實(shí)就是跟上面第一種的地方是一樣的,處理的屬性不一樣就是了。
3、添加復(fù)選框 有時(shí)候我們會(huì)被要求到,我們可以選擇數(shù)據(jù)集的一行或者多行,雖然我們可以通過(guò)ctrl鍵進(jìn)行實(shí)現(xiàn),但是在實(shí)際的工作當(dāng)中,我們更加喜歡復(fù)選框這樣一種形式。而這個(gè)形式的實(shí)現(xiàn)只要我們添加一列用于選擇就可以了,我們?cè)谔砑舆@一列的時(shí)候,選擇ColumnType為DataGridViewCheckBoxColumn即可,我們也可以根據(jù)需要選擇多種形式。4、犯的一些錯(cuò)誤1、表頭與數(shù)據(jù)庫(kù)中不對(duì)應(yīng),顯示的數(shù)據(jù)沒(méi)有按規(guī)則顯示 我們?cè)诰庉嬜侄蔚臅r(shí)候我們一般會(huì)編輯兩個(gè)屬性,一個(gè)是HeaderText,一個(gè)是DataPropertyName,前一個(gè)是用于顯示在界面上的,后一個(gè)是與設(shè)置的數(shù)據(jù)集中的字段是一致的。如果后面一個(gè)沒(méi)有進(jìn)行設(shè)置就會(huì)出現(xiàn)不按預(yù)想的形式顯示的問(wèn)題。順便有一個(gè)小的技巧,當(dāng)我們不想顯示某一列的時(shí)候,我們可以設(shè)置屬性Visible為False即可。2、通過(guò)屬性字段來(lái)獲取單元格的數(shù)據(jù)出錯(cuò) 假如我們要進(jìn)行這樣的形式(dataGridView2.Rows[i].Cells["FLAG"].Value.ToString())進(jìn)行獲取單元格的數(shù)據(jù),我們單單設(shè)置DataPropertyName屬性是不夠的,我們還要設(shè)置Name屬性為FLAG(根據(jù)具體的字段進(jìn)行相應(yīng)的設(shè)置)。5、說(shuō)明 在以后的使用當(dāng)中,如果還有一些可以分享的東西,我也會(huì)繼續(xù)添加的。新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注