如何为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