有没有办法在datagridview不是数据绑定的情况下添加列页脚?我正在使用它来获取用户输入以添加库存.目前我正在使用标签来显示总数,但我希望尽可能将其更改为页脚.
我之前遇到了同样的问题,经过长时间的搜索,我意识到了;
Winform Datagridview不支持向其添加页脚.
我尝试添加一个额外的行,可以保存摘要,但仍然无法正常工作.
您可以创建一个具有两个网格的用户控件,并且较低的网格包含摘要.
解 -

我的解决方案,使用的数据绑定.(1)-I创建的抽象对象项目与(名称,成本)的性质.(2)-I创建一个具体的项即ConcItem继承项(3)-I创建脚注项即FooterItem还继承Item(4) - Item的集合,即ItemList,你实例化页脚项.(5)最后,在你进行数据绑定之前,调用添加页脚项的方法.
public abstract class Item
{
public virtual string Name { get; set; }
public virtual int Cost { get; set; }
}
public class ConcItem:Item
{
public override string Name { get; set; }
public override int Cost { get; set; }
}
public class FooterItem:Item
{
public override string Name { get { return "Total"; } }
public override int Cost { get; set; }
}
public class ItemList : List<Item>
{
private Item _footer;
public void SetFooter()
{
_footer = new FooterItem();
foreach (var item in this)
{
_footer.Cost += item.Cost;
}
this.Add(_footer);
}
}
public partial class Form1 : Form
{
Item _item;
ItemList _itemList;
public Form1()
{
InitializeComponent();
dgv.DataBindingComplete += dgv_DataBindingComplete;
_itemList = new ItemList();
SetSampleData();
}
private void SetSampleData()
{
_item = new ConcItem();
_item.Name = "Book";
_item.Cost = 250;
_itemList.Add(_item);
_item = new ConcItem();
_item.Name = "Table";
_item.Cost = 500;
_itemList.Add(_item);
_item = new ConcItem();
_item.Name = "PC";
_item.Cost = 700;
_itemList.Add(_item);
dgv.DataSource = null;
_itemList.SetFooter(); //Add the footer item b4 data binding
dgv.DataSource = _itemList;
}
void dgv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
//If you want to do some formating on the footer row
int rowIndex = dgv.Rows.GetLastRow(DataGridViewElementStates.Visible);
if (rowIndex <= 0)
{
return;
}
dgv.Rows[rowIndex].DefaultCellStyle.BackColor = Color.Red;
dgv.Rows[rowIndex].DefaultCellStyle.SelectionBackColor = Color.Red;
dgv.Rows[rowIndex].DefaultCellStyle.Font = new Font("Microsoft Sans Serif", 12f, FontStyle.Bold);
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
12739 次 |
| 最近记录: |