浅谈DevExpress<二>:设计一个完整界面(2)

  下面来把剩下的工作做完,换肤功能昨天已近讨论过,今天就不重复了。首先建立三个全局变量,一个存放文件路径,一个存放数据,一个存放过滤条件。

        string DBFileName;
DataView dataView;
string[] filter = new string[3];

  取得数据并绑定到表格中:


 DBFileName = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, "Products.xml");

if (!string.IsNullOrEmpty(DBFileName))
{
DataSet dt = new DataSet();
dt.ReadXml(DBFileName);
gridControl1.DataSource = dataView = dt.Tables[0].DefaultView;
}

  给imageList添加一些图标(随便找的):

  将工具栏中的种类项与图标和表格关联起来:


 string[] s = new string[] { "Beverages","Condiments","Confections","Dairy Products",
"Grains/Cereals","Meat/Poultry","Produce","Seafood"};
for (int i = 0; i < s.Length; i++)
repositoryItemImageComboBox1.Items.Add(new ImageComboBoxItem(s[i], i + 1, i));
RepositoryItem ri = repositoryItemImageComboBox1.Clone() as RepositoryItem;
colCategoryID.ColumnEdit = ri;

  修改种类项的属性:

this.repositoryItemImageComboBox1.SmallImages = this.imageList1;

  此时运行后界面应该是这样的:

  下面添加条件筛选的功能,首先定义一个设置筛选的方法:


 private void SetFilter()
{
string f = "";
foreach (string s in filter)
{
if (f != "" && (!string.IsNullOrEmpty(s)))
{
f += " And";
}
if (!string.IsNullOrEmpty(s))
{
f += s;
}

dataView.RowFilter = (f == "") ? "No Filter" : "Filter: " + f;
iRecords.Caption = "Records: " + dataView.Count.ToString();
}
}

  然后定义3种点击事件,一个是筛选checkBox,一个是小于所选日期,一个选择种类:


 private void discontinued_EditValueChanged(object sender, EventArgs e)
{
if (discontinued.EditValue == null)
filter[0] = "";
else
filter[0] = string.Format("[Discontinued] = {0}", discontinued.EditValue.ToString());
SetFilter();
}

private void lastOrder_EditValueChanged(object sender, EventArgs e)
{
if (lastOrder.EditValue == null)
{
filter[1] = "";
}
else
{
filter[1] = string.Format("[LastOrder] < #{0}#", StringDataToFormat(lastOrder.EditValue.ToString()));
}
SetFilter();
}

private static string StringDataToFormat(string s)
{
try
{
DateTime dt = DateTime.Parse(s);
return string.Format("{0}/{1}/{2}", dt.Month.ToString(), dt.Day.ToString(), dt.Year.ToString());
}
catch
{
return s;
}
}

private void categories_EditValueChanged(object sender, EventArgs e)
{
if (categories.EditValue == null)
filter[2] = "";
else
filter[2] = string.Format("[CategoryID] = {0}",categories.EditValue.ToString());
SetFilter();
}

  此时效果如下:

  此时界面基本完成,剩下的就是加上一些边边角角的东西,比如设置清除筛选条件按钮:


        private void iClearFilter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
discontinued.EditValue = null;
lastOrder.EditValue = null;
categories.EditValue = null;
}

  然后总体效果图就出来了

浅谈DevExpress<二>:设计一个完整界面(2),布布扣,bubuko.com

时间: 05-29

浅谈DevExpress<二>:设计一个完整界面(2)的相关文章

浅谈DevExpress&lt;五&gt;:TreeList简单的美化——自定义单元格,加注释以及行序号

今天就以昨天的列表为例,实现以下效果:预算大于110万的单元格突出显示,加上行序号以及注释,如下图: 添加行序号要用到CustomDrawNodeIndicator方法,要注意的是,取得的节点索引是从0开始的,所以要+1以便第一行从一开始算起. private void treeList1_CustomDrawNodeIndicator(object sender, CustomDrawNodeIndicatorEventArgs e) { TreeList tree = sender as D

浅谈商城活动设计

如题:浅谈商城活动设计 标题改成“浅谈商城活动的数据库设计”可能更加合理. 文章背景 为什么要吐槽,为什么要写这篇文章 本来我在弄大数据搜索,自己玩的不亦说乎,虽然感觉数据库设计不合理,但我可以数据清洗,弄到自己的搜索引擎里,自己随便玩,所以当时感觉在烂的数据库设计和我关系不大,只要我把数据清洗好,弄到自己的引擎里我的搜索正常,准确,问题不大.但忽然有一天老大跑来说ERP对接需要你来lead一下,然后一两个月带着捣乱的产品妹妹,和没有经验开发弟弟搞了ERP的简单对接,然后老大又说咱们商城库存总有

浅谈SQL注入风险 - 一个Login拿下Server

前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都能登录了.不能这么写!” “呦?小伙子这都知道了?那你说说看 啥是注入?注入只能拿来绕过登录么?” 好吧,竟然在老子面前装逼,看来不给你点儿颜色看看,你还真是不明白天有多高.. 于是乎..哈哈.大清早的,轻松在班里装了一手好逼.. 呵呵.不说了,下面我把那个项目重写一下发上来吧.演示一下注入有哪些危

浅谈android架构设计

到目前为止,android开发在网络上或者社区上没有公认的或者统一的开发框架,好多框架都是基于对方法的封装.今天在这浅谈两年来对android开发的理解,主要是思想上的理解,希望对大家有帮助. 我认为android开发可以从两个方面去总结架构的设计,在这里对于实现只做陈述: 一,就是大多数人的设计思路,对方法的封装. 在这里我根据开发的习惯对工程进行包的设计: 1. http:网络请求方法封装.这里建议采用线程+Handler的模式,把Http 中get方法和post两种请求方式分开,对于正常的

iOS 浅谈架构 架构设计的方法论

摘要:iOS客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答iOS应用架构中的种种问题,本文是其中的第一篇,主要讲架构设计的通识和方法论等,同时还讨论了大家关心的架构分层.是否要有common文件夹等问题. 缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 当时看到这个问题正好在乘公车回家的路上

APP开发设计应以人为本!浅谈APP交互设计原则

为什么APP开发设计需要原则?设计原则其实就是对一些设计过程中基于人类的认知规律对设计做出的一些指导性原则,并且对已经成为行业共识的设计经验做个总结,用来指导设计师界定问题.提高效率. 先就APP开发设计 http://www.czwew.com 常州紫竹云科技产品经理分享交互设计的时候最为大家所认可的几条设计原则:可学习性.一致性.简洁性.流畅性.及时反馈.除了这么六个?还有其他的吗?你放心,如果需要还有更多. 一.经常用的设计原则有哪些? 1.可学习性   目标用户在已有的知识和经验基础上,

Qt浅谈之二十App自动重启及关闭子窗口(六种方法)

一.简介 最近因项目需求,Qt程序一旦检测到错误,要重新启动,自己是每次关闭主窗口的所有子窗口但有些模态框会出现问题,因此从网上总结了一些知识点,以备以后的应用. 二.详解 1.Qt结构 [cpp] view plaincopy int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget w; MyDialog dialog;                      //新建MyDialog类对象 if(dia

Qt浅谈之二十App自动重启及关闭子窗口

一.简介 最近因项目需求,Qt程序一旦检测到错误,要重新启动,自己是每次关闭主窗口的所有子窗口但有些模态框会出现问题,因此从网上总结了一些知识点,以备以后的应用. 二.详解 1.Qt结构 [cpp] view plain copy int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget w; MyDialog dialog;                      //新建MyDialog类对象 if(di

Qt浅谈之二十一log调试日志

一.简介 最近因调试code时,想了解程序的流程,但苦于没有一个简易的日志记录,不停使用qDebug打印输出,而最终提交代码时得去多次删除打印信息,有时还会出现新修改的代码分不清是哪些部分.而使用#ifdef _DEBUG又比较烦这套,因此写了些简单的日志,方便排除问题,暂时不能用于多线程中,以后需要再补充. 二.详解 1.追踪函数 #ifdef _DEBUG_PRINT #define DEBUGPRINT DEBUGInfo printinfo(__FILE__, __LINE__, __F