没有合适的资源?快使用搜索试试~ 我知道了~
WinForm中DataGridView折叠控件【超好看】
5星 · 超过95%的资源 40 下载量 162 浏览量
2020-10-22
09:36:00
上传
评论
收藏 87KB PDF 举报
温馨提示
试读
7页
刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统,于是上网搜了相关视频,资料,开始学习起来,下面小编把WinForm中DataGridView折叠控件的知识分享给大家,供大家参考
资源推荐
资源详情
资源评论
WinForm中中DataGridView折叠控件【超好看】折叠控件【超好看】
刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统,于是上网搜了相关视
频,资料,开始学习起来,下面小编把WinForm中DataGridView折叠控件的知识分享给大家,供大家参考
刚到一家新公司,领导下发任务要用cs系统做一个表格折叠显示,这真是把我难倒了,自己工作6年一直以来都是做BS的系统。这如果在BS里面那太简单了,JqGrid默
认都自带,可是DataGridview不支持折叠啊。自己一点经验没有,怎么办呢?于是上网搜了相关视频,资料,开始学习起来。最后借鉴源码封了这么一个东西,发出来
分享下,也能让自己加深印象。
首先不多说,上图。如果大家感谢还不错,请继续往下阅读:
大概的效果就是这样。
上代码。
1、首先重写、首先重写DataGridview,代码如下:,代码如下:
public class MasterControl : DataGridView
{
#region 字段
private List<int> rowCurrent = new List<int>();
internal static int rowDefaultHeight = ;
internal static int rowExpandedHeight = ;
internal static int rowDefaultDivider = ;
internal static int rowExpandedDivider = - ;
internal static int rowDividerMargin = ;
internal static bool collapseRow;
//detailControl变量作为一个容器用来保存子表格
public detailControl childView = new detailControl() { Visible = false }; // VBConversions Note: Initial value cannot be assigned here since it is non-static. Assignment has been moved to the class constructors.
//
internal System.Windows.Forms.ImageList RowHeaderIconList;
private System.ComponentModel.Container components = null;
//
DataSet _cDataset;
string _foreignKey;
string _primaryKey;
string _filterFormat;
private controlType EControlType;
public int ExpandRowIndex = ;
#endregion
#region 构造函数
/// <summary>
/// 通过传递过来的枚举判断是两级还是三级展开,表的对应关系通过Relations来读取
/// 所以调用此构造函数的时候必须要讲Relations设置正确,才能正确显示层级关系。
/// oDataSet.Relations.Add("", oDataSet.Tables["T"].Columns["Menu_ID"], oDataSet.Tables["T"].Columns["Menu_ID"]);
/// oDataSet.Relations.Add("", oDataSet.Tables["T"].Columns["Menu_Name"], oDataSet.Tables["T"].Columns["Menu_Name"]);
/// 这两次Add的顺序不能颠倒,必须先添加一、二级的表关联,再添加二、三级的表关联
/// </summary>
/// <param name="cDataset">数据源DataSet,里面还有各个表的对应关系</param>
/// <param name="eControlType">枚举类型</param>
public MasterControl(DataSet cDataset, controlType eControlType)
{
SetMasterControl(cDataset, eControlType);
}
/// <summary>
/// 第二种使用方法
/// </summary>
/// <param name="lstData">折叠控件第一层的集合</param>
/// <param name="lstData">折叠控件第二层的集合</param>
/// <param name="lstData">折叠控件第三层的集合</param>
/// <param name="dicRelateKey">第一二层之间对应主外键</param>
/// <param name="dicRelateKey">第二三层之间对应主外键</param>
/// <param name="eControlType">枚举类型</param>
public MasterControl(object lstData, object lstData,
object lstData, Dictionary<string, string> dicRelateKey,
Dictionary<string ,string>dicRelateKey, controlType eControlType)
{
var oDataSet = new DataSet();
try
{
var oTable = new DataTable();
oTable = Fill(lstData);
oTable.TableName = "T";
var oTable = Fill(lstData);
oTable.TableName = "T";
if (lstData == null || dicRelateKey == null || dicRelateKey.Keys.Count <= )
{
oDataSet.Tables.AddRange(new DataTable[] { oTable, oTable });
oDataSet.Relations.Add("", oDataSet.Tables["T"].Columns[dicRelateKey.Keys.FirstOrDefault()], oDataSet.Tables["T"].Columns[dicRelateKey.Values.FirstOrDefault()]);
}
else
{
var oTable = Fill(lstData);
oTable.TableName = "T";
oDataSet.Tables.AddRange(new DataTable[] { oTable, oTable, oTable });
//这是对应关系的时候主键必须唯一
oDataSet.Relations.Add("", oDataSet.Tables["T"].Columns[dicRelateKey.Keys.FirstOrDefault()], oDataSet.Tables["T"].Columns[dicRelateKey.Values.FirstOrDefault()]);
oDataSet.Relations.Add("", oDataSet.Tables["T"].Columns[dicRelateKey.Keys.FirstOrDefault()], oDataSet.Tables["T"].Columns[dicRelateKey.Values.FirstOrDefault()]);
}
}
catch
{
oDataSet = new DataSet();
}
SetMasterControl(oDataSet, eControlType);
}
/// <summary>
/// 控件初始化
/// </summary>
private void InitializeComponent()
资源评论
- 洪蛋蛋2023-07-25对于那些需要开发Windows应用程序的人来说,这个文件是一个很好的参考资料,可以极大地提高开发效率。
- 张景淇2023-07-25这个文件提供了一个很有用的WinForm中DataGridView折叠控件,使用起来非常方便。
- kdbshi2023-07-25这个文件里提供的代码示例非常实用,可以帮助开发者更快速地实现DataGridView的折叠功能。
- 那你干哈2023-07-25感觉这个文件的设计很周到,让DataGridView的展示更加美观,用户体验得到了提升。
- 王向庄2023-07-25我在使用这个控件时发现它的稳定性很不错,没有出现任何bug或者崩溃的情况。
weixin_38509504
- 粉丝: 1
- 资源: 952
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功