我需要在winforms中设置数据网格视图中的行数(如sql中的标识)。我在网格视图中动态添加列和行。任何想法。
答案 0 :(得分:12)
要在行标题中显示文字,您可以使用Row.HeaderCell.Value
,如下所示:
void dataGridView1_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
DataGridView gridView = sender as DataGridView;
if (null != gridView)
{
foreach (DataGridViewRow r in gridView.Rows)
{
gridView.Rows[r.Index].HeaderCell.Value =
(r.Index + 1).ToString();
}
}
}
这仅显示用户开始输入时新行的行号。不确定是否有一种简单的方法可以始终在新行上显示行号。
asp.net应用程序的另一种最佳方式。这是一个链接http://www.devcurry.com/2010/01/add-row-number-to-gridview.html
只需将以下标记添加到GridView的部分
即可<Columns>
<asp:TemplateField HeaderText="RowNumber">
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>
...
</Columns>
答案 1 :(得分:1)
方法1:
//You can also use below code
this.DataGridView1.Rows[e.RowIndex].Cell[0].value =e.RowIndex +1;
//get total number of rows
this.DataGridView1.Rows.Count;
方法2:
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;
}
方法3:
void GridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
this.GridView.Rows[e.RowIndex].Cells[0].Value
= (e.RowIndex + 1).ToString();
}
答案 2 :(得分:0)
为什么不喜欢这样。首先构建一个数据表,然后绑定到网格,如下所示
DataTable tbl = new DataTable();
Datacolumn dc = new Datacolumn("ID");
Datacolumn dc1 = new Datacolumn("col1");
Datarow dr = tbl.NewRow();
dr[dc] = "123";
dr[dc1] = "SomeData";
tbl.Rows.Add(dr);
DataGridView.DataSource = tbl;