效果图

网上查了很多例子自己结合和修改了一下。最下方的分页跳转是dev的datapager控件。控件的属性事件自己研究一下。

代码如下

 public partial class MMDefinitionQueryForm : Form
{
private IMMwDefinitionsCoBO immwDefinitionsCoBO_0;
private IMMwDefVersCoBO immwDefVersCoBO_0;
public MMDefinitionQueryForm()
{
this.InitializeComponent();
this.immwDefinitionsCoBO_0 = ObjectContainer.BuildUp<IMMwDefinitionsCoBO>();
this.immwDefVersCoBO_0 = ObjectContainer.BuildUp<IMMwDefVersCoBO>();
Resultlist.OptionsBehavior.ReadOnly = true; //只读
Resultlist.OptionsBehavior.Editable = false; //不可编辑
}
//页行数
//public int pagesize = 1;
//当前页
public int pageIndex = 1;
//总页数
public int pageCount;
//排序规则
public string ordername = "DefID";
public string order = "ASC";
public int orderint = 0;
public string DefID = null;//设备编号
public string version = null;//物料版本
public string DefPK = null;//设备识别码
//public string EqpDefName;
//分页及数据绑定
public void BindPageGridList()
{
try
{
nvgtDataPager.Buttons.CustomButtons[0].Enabled = true;
nvgtDataPager.Buttons.CustomButtons[1].Enabled = true;
nvgtDataPager.Buttons.CustomButtons[2].Enabled = true;
nvgtDataPager.Buttons.CustomButtons[3].Enabled = true;
//分页获取数据列表
DataTable dt = Getdata();
if (pageIndex == 1 || pageIndex == 0)
{
nvgtDataPager.Buttons.CustomButtons[0].Enabled = false;
nvgtDataPager.Buttons.CustomButtons[1].Enabled = false;
}
if (dt.Rows.Count == 0)
{
pageIndex = 0;
}
//最后页时获取真实记录数
if (pageCount == pageIndex)
{
nvgtDataPager.Buttons.CustomButtons[2].Enabled = false;
nvgtDataPager.Buttons.CustomButtons[3].Enabled = false;
}
Bind(dt);
// nvgtDataPager.DataSource = dt;
nvgtDataPager.TextStringFormat = string.Format("第 {0}页, 共 {1}页", pageIndex, pageCount);
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, ExceptionPolicy.BusinessLogicDefaultPolicy);
}
}
// 按钮点击事件
private void nvgtDataPager_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
ShowEvent(e.Button);
}
// 分页事件处理
void ShowEvent(NavigatorButtonBase button)
{
//string type = button.ButtonType.ToString();
NavigatorCustomButton btn = (NavigatorCustomButton)button;
string type = btn.Tag.ToString();
if (type == "首页")
{
pageIndex = 1;
}
if (type == "下一页")
{
pageIndex++;
}
if (type == "末页")
{
pageIndex = pageCount;
}
if (type == "上一页")
{
pageIndex--;
}
//绑定分页控件和GridControl数据
BindPageGridList();
}
//数据查询方法
public DataTable Getdata()
{
string where = " DefName Like '%" + queryname.Text.Trim() + "%' and DefID Like '%" + querycode.Text.Trim() + "%'";
int pagecount;
DataTable dt = immwDefinitionsCoBO_0.ExecPaging(ordername, order, where, pageIndex, out pagecount, 5);//参数顺序:排序字段,排序方式,条件,页索引,总页数
pageCount = pagecount;
return dt;
}
//给treelist绑定数据,
public void Bind(DataTable dt)
{
dt.DefaultView.Sort = ordername + " " + order;//可能无用
dt = dt.DefaultView.ToTable();
this.Resultlist.ClearNodes();
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
TreeListNode node = Resultlist.AppendNode("DefID", null);
node.SetValue(物料识别号, dt.Rows[i]["DefPK"]);
node.SetValue(物料编码, dt.Rows[i]["DefID"]);
node.SetValue(物料名称, dt.Rows[i]["DefName"]);
node.SetValue(物料大类, dt.Rows[i]["TypeCD"]);
node.SetValue(物料小类, dt.Rows[i]["ClassName"]);
node.SetValue(物料描述, dt.Rows[i]["Descript"]);
GetChildNode(node, dt.Rows[i]["DefID"].ToString());
}
}
}
//子节点绑定
public void GetChildNode(TreeListNode node, string parent)
{
IList<MMwDefVersCo> ChildNode = immwDefVersCoBO_0.GetEntitiesByDef(parent);
if (ChildNode.Count > 0)
{
ChildNode.ToList().ForEach(item =>
{
TreeListNode nodelist = node.TreeList.AppendNode(null, node);
nodelist.SetValue(物料编码, item.VLabel);
nodelist.SetValue(物料名称, item.IsCurrent.Value ? "CURRENT" : string.Empty);
}
);
}
}
private void querybutton_Click(object sender, EventArgs e)
{
pageIndex = 1;
BindPageGridList();
}
private void pageindextxt_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b')//这是允许输入退格键 
            {
int len = pageindextxt.Text.Length;
if (len < 1 && e.KeyChar == '0')
{
e.Handled = true;
}
else if ((e.KeyChar < '0') || (e.KeyChar > '9'))//这是允许输入0-9数字 
                {
e.Handled = true;
}
}
}
private void gotoindex_Click(object sender, EventArgs e)
{
if (pageCount > 0 && Convert.ToInt32(pageindextxt.Text) <= pageCount)
{
pageIndex = Convert.ToInt32(pageindextxt.Text);
BindPageGridList();
}
else { SaMessageBox.ShowWarning("务必保证输入页码有效"); pageindextxt.Text = ""; }
}
// 排序与选中
private void Resultlist_MouseDown(object sender, MouseEventArgs e)
{
TreeListHitInfo hitInfo = Resultlist.CalcHitInfo(e.Location);
//鼠标左键点击
if (e.Button == MouseButtons.Left && hitInfo.HitInfoType == HitInfoType.Column && pageCount > 0)
{
if (hitInfo.Column.FieldName == "物料编码")
{
ordername = "DefID";
if (orderint == 1)//判断排序规则
{ orderint = 2; }
else { orderint = 1; }
}
else if (hitInfo.Column.FieldName == "物料名称")
{
ordername = "DefName";
if (orderint == 3)
{ orderint = 4; }
else { orderint = 3; }
}
else if (hitInfo.Column.FieldName == "物料大类")
{
ordername = "TypeCD";
if (orderint == 5)
{ orderint = 6; }
else { orderint = 5; }
}
else if (hitInfo.Column.FieldName == "设备小类")
{
ordername = "ClassName";
if (orderint == 7)
{ orderint = 8; }
else { orderint = 7; }
}
else
{
return;
}
switch (orderint)
{
case 1:
case 3:
case 5:
case 7: order = "ASC"; break;
default: order = "DESC"; break;
}
BindPageGridList();
}
else { return; }
}
private void Resultlist_MouseDoubleClick(object sender, MouseEventArgs e)
{
TreeListHitInfo hitInfo = Resultlist.CalcHitInfo(e.Location);
if (e.Button == MouseButtons.Left && hitInfo.HitInfoType == HitInfoType.Cell)
{
if (Resultlist.FocusedNode.Selected && !Resultlist.FocusedNode.HasChildren)
{
DefPK = Resultlist.FocusedNode.ParentNode.GetValue("物料识别号").ToString();
DefID = Resultlist.FocusedNode.ParentNode.GetValue("物料编码").ToString();
version = Resultlist.FocusedNode.GetValue("物料编码").ToString();
base.DialogResult = DialogResult.OK;
base.Close();
}
else if (Resultlist.FocusedNode.Selected && Resultlist.FocusedNode.HasChildren)
{
DefPK = Resultlist.FocusedNode.GetValue("物料识别号").ToString();
DefID = Resultlist.FocusedNode.GetValue("物料编码").ToString();
base.DialogResult = DialogResult.OK;
base.Close();
}
else
{
return;
}
}
else { return; }
}
}

先写这么多有问题和建议或者哪里不明白的地方可以直接私聊我,如果觉得有帮助帮我点个赞我让我有动力继续发博客谢谢了。

Devexpress treelist两张表父子节点设置、筛选、分页、排序、页面跳转demo的更多相关文章

  1. mysql 两张表的数据设置主外健关联删除

    image_group 主表 image 副表 alter table image add constraint fk_group_idforeign key (group_id)references ...

  2. EF Core中如何正确地设置两张表之间的关联关系

    数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...

  3. mysql 如何找出两张表之间的关系

    分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的 ...

  4. 【第十五篇】easyui datagrid的列编辑,同时插入两张表的数据进去

    看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第二张表有一个列是需要用户手动填写添加的. 国际惯例,上代码 <div id= ...

  5. Oracle:同步两张表的相同字段

    有一个需求需要同步两张表的相同字段,比如表A和表B,这两张表是不同的用户下的表,表结构是一样的. 一开始我简单写了一个sql语句,如下: update ord_log1 A set (A.pid, A ...

  6. MySQL实现两张表数据的同步

    有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录.两张表的结构不同,需要将其中几个字段对应起来.可以用下面的触发器实现. 表A的触发 ...

  7. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

  8. CROSS JOIN连接用于生成两张表的笛卡尔集

    将两张表的情况全部列举出来 结果表: 列= 原表列数相加 行= 原表行数相乘     CROSS JOIN连接用于生成两张表的笛卡尔集. 在sql中cross join的使用: 1.返回的记录数为两个 ...

  9. SQLServer两张表筛选相同数据和不同数据

    概述 项目中经常会对两张数据库表的数据进行比较,选出相同的数据或者不同的数据.在SQL SERVER 2000中只能用Exists来判断,到了SQL SERVER 2005以后可以采用EXCEPT和I ...

随机推荐

  1. Python 3 行代码 5 秒抠图的 AI 神器,根本无需 PS

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 苏克1900 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  2. RPA之AA

    RoboticProcessAutomation(即机器人流程自动化),RPA机器人能够模仿大多数人类用户的行为, 比如可以登录应用程序,移动文件和文件夹,复制和粘贴数据,填写表单,从文档中提取结构化 ...

  3. 微信小程序 + Bmob后端云

    闲暇之余,写了一个私人的小程序,但由于带有商品.订单功能被拒了(腾讯太狗带了,只有商家才可以使用这种功能),没办法,不给过审,那就拿出来分享一下. 原本想的是做一个超市类的电商平台,带有下单支付等功能 ...

  4. linux下搭建jenkins

    为了配合上一篇的ant+jenkins做持续集成,需要在linux环境下搭建一个jenkins平台.网上有很多安装的例子,我主要记录一下自己遇到的问题,真真的是特别惆怅的,每次我遇到的问题都格外多. ...

  5. Python—虚拟环境的创建与管理(virtualenv与virtualenvwrapper)

    virtualenv 1.安装virtualenv包 [root@localhost ~]# pip install virtualenv 2.创建虚拟环境,位置不固定,可以在项目的目录下,也可以不在 ...

  6. win10安装并激活office

    安装并且激活office 相信很多小伙伴在平时安装office时都会和一些流氓软件做过激烈的斗争,但是还是没有安装成功, 最后完美的安装了一些流氓软件.(苦笑) 下面我们来安装office并且破解 下 ...

  7. 5. git-lab 项目操作

    项目操作 一.给成员授权项目权限 之前我们是给组增加成员.  当有的项目需要给组下面的成员授权不一样的时候. 我们需要在项目里面给成员授权权限 点击管理区域 点这个项目 看下图,我们可以看到  现在这 ...

  8. Educational Codeforces Round 78 (Rated for Div. 2) --补题

    链接 直接用数组记录每个字母的个数即可 #include<bits/stdc++.h> using namespace std; int a[26] = {0}; int b[26] = ...

  9. Linux学习笔记-第13天 最近有点跟不上节奏阿

    难度上来了.最近工作也忙起来了..有点跟不上节奏.加油吧

  10. [LOJ 6435][PKUSC 2018]星际穿越

    [LOJ 6435][PKUSC 2018]星际穿越 题意 给定 \(n\) 个点, 每个点与 \([l_i,i-1]\) 之间的点建立有单位距离的双向边. \(q\) 组询问从 \(x\) 走到 \ ...