【发布时间】:2021-08-04 02:16:57
【问题描述】:
我正在尝试在数据绑定时为DataGridViewRow.Tag设置一个值,但我不知道该怎么做?
我试过DataRow row = table.NewRow(); 但是行没有标签。
binding DataGridView 到表时如何设置 DataGridViewRow.Tag 的值(例如)?还是不可能?
编辑1:
这是我正在使用的代码:
var table = new DataTable(); table.Columns.Add("Title", typeof(string)); table.Columns.Add("URL", typeof(string)); table.Columns.Add("Read Later", typeof(bool)); foreach (XElement node in nodes) { Helper.CheckNode(node); var id = node.Attribute("id").Value; var url = node.Element("path").Value; var comment = node.Element("title").Value; var readlater = node.Attribute("readLater")?.Value.ToString() == "1"; var row = table.NewRow(); row.ItemArray = new object[] { url, comment, readlater }; table.Rows.Add(row);//Edit2 } dataGridView1.DataSource = table;
我正在尝试为该行设置一个标签以在 CellClick 事件中使用它:
var cRow = dataGridView1.Rows[e.RowIndex]; var id = cRow.Tag.ToString();
【问题讨论】:
-
如果它没有
Tag属性,那么它是不可能的。也许如果您解释了您要做什么,我们可以提供帮助。 -
@ŇɏssaPøngjǣrdenlarp 请检查我的编辑1
-
我没有按照您的要求进行操作,但是,看起来行没有被添加到
table.代码行中……var row = table.NewRow();将给出一个新行,但是,它不会“添加”到table。我很确定如果您想将该行“添加”到table,您需要执行类似...table.Rows.Add(row); -
@JohnG 是的,我忘了在表格中添加行。当从表中的 DataSource 填充 DataGridView 时,我试图找到一种方法来制作 DataGridViewRow
have a tag value。因为我需要在单击单元格时访问标签。在这个项目中,我正在努力使行的标签仅具有项目的 id,但我正在处理的其他项目我希望行的标签具有许多数据作为对象类。 -
我可能会误会,因为我对
Tag属性并不熟悉。但是,根据我的小研究,您的代码似乎必须遍历每个网格行并设置每行的Tag属性。当设置网格DataSource时,我看不到任何会“自动”设置每一行的Tag值的东西。再说一次,我可能错了。我不明白您希望Tag包含哪些值。如果该行与某个其他对象相关联,您能否在单击单元格时不“抓取”相关对象,而不是将对象添加为Tag?我错过了什么吗?
标签: c# winforms data-binding datagridview datagridviewrow