【发布时间】:2015-10-12 12:37:31
【问题描述】:
您好,我在 C# windows 窗体中使用 Datagridview,在数据网格视图中我使用数据网格链接列,示例代码在这里
DataGridViewLinkColumn Editlink = new DataGridViewLinkColumn();
Editlink.UseColumnTextForLinkValue = true;
Editlink.HeaderText = "Edit";
Editlink.DataPropertyName = "lnkColumn";
Editlink.LinkBehavior = LinkBehavior.SystemDefault;
Editlink.Text = "Edit";
gvJobs.Columns.Add(Editlink);
很好,但是当我重新加载网格时,它不会通过将数据源设为 null 来删除现有的编辑列。示例代码和输出在这里。
gvJobs.DataSource = null;
var jobs = (from v in General.ent.Jobs
where (v.MRNumber == (string)txtMrNumber.Text)
select new
{
MRNumber = v.MRNumber,
NumberOfDocuments = v.noofdocuments,
PageNumbers = v.PageNumbers,
JobStatus = v.job_status,
ScannerType = v.scanner_type,
DocumentType = v.Documenttype.document_name,
CreatedDate = v.received_date
}).ToList();
gvJobs.DataSource = jobs;
DataGridViewLinkColumn Editlink = new DataGridViewLinkColumn();
Editlink.UseColumnTextForLinkValue = true;
Editlink.HeaderText = "Edit";
Editlink.DataPropertyName = "lnkColumn";
Editlink.LinkBehavior = LinkBehavior.SystemDefault;
Editlink.Text = "Edit";
gvJobs.Columns.Add(Editlink);
我想在重新加载网格后输出图像 1。
【问题讨论】:
-
自动数据列生成会将生成的列添加到末尾。您应该在重置数据源之前删除添加的链接列,然后重新添加。
-
在
gvJobs.DataSource = null;之后添加gvJobs.Columns.Clear();行。有关解释,请参阅我上面链接的问题.. -
添加列一次就足够了。您现在在加载数据时添加它。这当然会一遍又一遍地添加
Edit列。我建议您在表单的构造函数中添加该列,然后进行数据绑定。我还建议您根本不要使用自动生成的列。
标签: c# winforms datagridview datagrid