如何爲datagridView的行編號?當我添加額外的行數增量?如何對DataGridView的行進行編號?
回答
添加一列標題爲「數字」的網格(如第一列),並把這個代碼在其OnRowAdded事件:
this.DataGridView1.Rows[e.RowIndex].Cells[0].Value = this.DataGridView1.Rows.Count;
您必須手動填寫你的網格,不與它 編輯:這可以在綁定列表上工作,只要你先綁定它然後構建列表。
當我點擊數字消失的行! – user891757 2012-01-07 14:09:41
點擊?!!方式?把你完整的方法在這裏 – 2012-01-07 14:12:38
相同,你寫什麼 – user891757 2012-01-07 17:34:12
//You can also use below code
this.DataGridView1.Rows[e.RowIndex].Cell[0].value =e.RowIndex + 1;
//獲取行
this.DataGridView1.Rows.Count;
總數您應該添加AutoIncrement
列到DataTable
。我推測你有一個dataTable
的實例DataTable
。
//your code that populates the dataTable
DataColumn col1 = new DataColumn();
col1.ColumnName = "SrNo";
col1.AutoIncrement = true;
col1.AutoIncrementSeed = 1;
col1.AutoIncrementStep = 1;
dataTable.Columns.Add(col1);
for(int i=0;i<dataTable.Rows.Count;i++)
{
dataTable.Rows[i]["SrNo"] = i + 1;
}
dataGridView1.DataSource = dataTable;
Ali Foroughi有正確的想法,我稍微修改了他的答案,使用databound gridview以及一個手動構建。
將此添加到行添加事件 每次添加行時添加1行或多行。 e.rowindex是第一行,e.rowcount是添加的行的總數。
private void dgv1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
for (int i=0;i<e.RowCount;i++)
this.dgv1.Rows[e.RowIndex + i].Cells[0].Value = (e.RowIndex +i).ToString();
}
注:這假定第一列是你的行號列,改變細胞[0]到細胞[N]取其列你必須爲你的行號列,其中n =
相反使用的datagridview的RowPostPaint事件
void GridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
this.GridView.Rows[e.RowIndex].Cells[0].Value
= (e.RowIndex + 1).ToString();
}
謝謝!有用! – Arbaaz 2013-10-30 04:43:34
我所做的一個的onPageLoad我加載到數據源的GridView後,設置在RowHeaderCell的值用一個簡單的循環:
for (int i = 0; i < SensorGridView.Rows.Count; i++)
{
DataGridViewRowHeaderCell cell = SensorGridView.Rows[i].HeaderCell;
cell.Value = (i + 1).ToString();
SensorGridView.Rows[i].HeaderCell = cell;
}
我tryed的上述sugestion用了兩個OnRowPostPaint和OnCellPostPaint環路他們產生基於flikering行號
乾杯
什麼,我在這裏學到,然後進行一些實驗,這裏是什麼在VB中爲我工作。當記錄被添加或刪除時它重新編號行。
Private Sub NumberGridViewRows() Handles DataGridView1.RowsAdded, DataGridView1.RowsRemoved
Dim row As DataGridViewRow
For Each row In DataGridView1.Rows
row.HeaderCell.Value = (row.Index + 1).ToString
Next
End Sub
- 添加
<asp:Label ID="rowNumber" runat="server" /> in <ItemTemplate>
- 然後添加OnRowDataBound = 「gridEditorDocs_RowDataBound」 到你的GridView定義
然後添加處理程序:
protected void gridEditorDocs_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex >= 0) { Label rowNumber = e.Row.FindControl("rowNumber") as Label; if (rowNumber != null) rowNumber.Text = string.Format("{0}.", e.Row.RowIndex + 1); } }
如果我沒有弄錯,問題是要求DataGridView的幫助,我相信這在ASP中不可用。儘管這可能對GridView很好。 – Death259 2014-03-19 15:17:17
到您的網格添加列與標題'行數'並將其轉換爲模板字段
評估和演示的rowIndex號並將其轉換爲整數,並添加一個..
,或者如果你想使用RowPostPaint事件下面的代碼複製你的DataGrid
<asp:TemplateField HeaderText="Row Num">
<ItemTemplate>
<asp:Label ID="lblRowNum" runat="server" Text='<%# Convert.ToInt32(DataBinder.Eval(Container, "RowIndex"))+1 %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
內爲Malik Niaz曾建議你可能會最好將發件人轉換爲DataGridView。這樣您就可以將代碼複製並粘貼到任何RowPostPaint事件中,並且無需修改即可使用它。
((DataGridView)sender).Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
儘管使用RowPostPaint事件,但我發現它會產生一些圖形問題。對於初學者來說,行號會閃爍,滾動條會消失。如果您正在手動加載DataGridView,而不是將其綁定到數據源,那麼您應該可以使用RowsAdded事件。然後您可以使用與上面完全相同的代碼。
那些綁定DataGridView的替代方法是創建一個方法來遍歷併爲每一行編號。
private void numberMyGrid(DataGridView dgv)
{
foreach (DataGridViewRow row in dgv.Rows)
{
row.HeaderCell.Value = (row.Index + 1).ToString();
}
}
然後可以在將數據加載到DataGridView中後調用它。
如果您想要在行標題中看到行#(即不在網格中),請確保使用Rows []的HeaderCell屬性,如下所示。這處理datagridview的RowPostPaint事件。
private void dgvUserAct_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
this.dgvUserAct.Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
}
這些解決方案大多數適用於初始添加行號。 但是,如果將行號添加到行標題,然後重新排列列,則它們全部消失。所以,你應該做的是使用DataGridViewBindingCompleteEventHandler
添加行號每當 數據綁定改變
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
this.dGV.DataBindingComplete +=
new DataGridViewBindingCompleteEventHandler(this.DataBindingComplete);
}
// ...
private void DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
// Loops through each row in the DataGridView, and adds the
// row number to the header
foreach (DataGridViewRow dGVRow in this.dGV.Rows)
{
dGVRow.HeaderCell.Value = String.Format("{0}", dGVRow.Index + 1);
}
// This resizes the width of the row headers to fit the numbers
this.dGV.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
}
}
有了這個代碼,當你添加行,刪除行,列重新排序等,行號會依然存在。
更簡單的方法是在預繪製中設置行標題值。然後您需要確定它們尚未設置在未來的塗料上,因爲設置該值會導致其他塗料。這段代碼爲我工作,並不會導致連續的油漆。即使排序添加或刪除行,這也會使行正確編號(1..nn)。適用於綁定。
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
String hdrNum = String.Format("{0}", e.RowIndex + 1);
if (dgvResults.Rows[e.RowIndex].HeaderCell.Value == null || hdrNum != dgvResults.Rows[e.RowIndex].HeaderCell.Value.ToString())
{
dgvResults.Rows[e.RowIndex].HeaderCell.Value = hdrNum;
}
}
- 1. 如何對Datagridview進行排序?
- 2. 如何對DataGridView進行排序?
- 3. 使用ORDER BY對行進行編號
- 4. 基於邏輯對行進行編號
- 5. 對數組行進行編號
- 6. 如何用awk根據字段對行進行編號?
- 7. DisplayMember對DataGridView進行排序
- 8. 如何在JSON.NET中對單引號/撇號進行編碼
- 9. Datagridview不返回行的編號
- 10. 在datagridview中對行進行排序值
- 11. 對iframe進行編號並顯示它
- 12. File.toURI不對加號進行編碼
- 13. 按順序對輸出進行編號
- 14. 如何對iPhone SDK中的@符號進行URL編碼?
- 15. 如何按用戶編號對用戶的ArrayList進行排序
- 16. 如何在XSLT中對已排序的列表進行編號
- 17. 如何使用JAXB對鏈接的Java對象進行編組/解組編號
- 18. 對datagridview的選定值進行求和
- 19. 如何通過對測序編號進行分組來創建編號變量?
- 20. LaTeX:只對最後一行多行公式進行編號\ align
- 21. 以編程方式對未綁定的datagridview進行排序
- 22. 如何對輸入進行驗證?號或字母.. C編程
- 23. 如何在MySQL中對塊數據進行編號?
- 24. PHP Yii:如何使用sqlite數據庫對CGridView進行編號
- 25. 如何對DataGridView進行排序編輯winform中的coulmn值使用c#
- 26. SQL:對SELECT語句返回的行進行編號
- 27. 如何對進程中的信號進行順序分配如何運行
- 28. 行與對編號:dataTable的
- 29. 強制進行編號
- 30. 如何在vb.net中對大於0的datagridview rows.values進行求和
這是DataGridView是有界還是無界?你如何填充datagridview?通過數據表或列表? – adatapost 2012-01-07 10:43:55
使用DataTable – user891757 2012-01-07 10:46:43
我永遠不會明白人們爲什麼可以互換地使用'DataGrid'和'DataGridView'。 **他們是兩個不同的控件。** – 2012-01-07 12:42:18