2017.11.27 DB查询、nginx配置、C#值的复制、符串分割换行、gridcontrol列格式化和winform

第一组:陈辉 DB里面一个字段多种查询条件的方法:

quue.AddSearch(new DbSearchField(DbUnionCondition.And,
new DbSearchField(EHrAssAttendance.AD_ActAttStatus,DbSearchTypeEnum.Equal,AR_AttResultEnum.Late,true,DbUnionCondition.Or),
new DbSearchField(EHrAssAttendance.AD_ActAttStatus,DbSearchTypeEnum.Equal,AR_AttResultEnum.Early,true,DbUnionCondition.Or),
new DbSearchField(EHrAssAttendance.AD_ActAttStatus,DbSearchTypeEnum.Equal,AR_AttResultEnum.AbsentHalfDay,true,DbUnionCondition.Or),
new DbSearchField(EHrAssAttendance.AD_ActAttStatus,DbSearchTypeEnum.Equal,AR_AttResultEnum.AbsentOneDay,true,DbUnionCondition.Or)));


第二组:叶佳意 nginx配置

由浏览器的同源策略,浏览器不能执行其他网站的脚本,此时需要解决跨域问题。用nginx反向代理实现跨域,是最简单的跨域方式,只需要修改nginx的配置即可解决跨域问题。我们只需要配置nginx,在一个服务器上配置多个前缀来转发http/https请求到多个真实的服务器即可。这样,这个服务器上所有url都是相同的域名、协议和端口。因此,对于浏览器来说,这些url都是同源的,没有跨域限制。而实际上,这些url实际上由物理服务器提供服务。这些服务器内的javascript可以跨域调用所有这些服务器上的url。

如图1-1所示,为nginx文件结构。


图1-1 nginx文件结构.png

全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

server块:配置虚拟主机的相关参数,一个http中可以有多个server。

location块:配置请求的路由,以及各种页面的处理情况。

以下是掌上长龙的nginx配置详情及注释:

#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#工作模式及连接数上限
events {
    #单个后台worker process进程的最大并发链接数
    worker_connections  1024;
}


http {
    #设定mime类型,类型由mime.type文件定义
    include       mime.types;
    default_type  application/octet-stream;
    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
    #对于普通应用,必须设为 on,
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
    #以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #设定虚拟主机配置
    server {
    #侦听3000端口
        listen       3000;
        #定义使用 127.0.0.1访问
        server_name  127.0.0.1;
        #请求WebHandler.ashx时访问http://172.25.1.18:10007;后台
        location ~* ^/WebHandler.ashx$ {
            #proxy_pass   https://test-palm-api.loongair.cn;
            proxy_pass   http://172.25.1.18:10007;
            #控制上传文件大小为1000M
            client_max_body_size    1000m;  
        }
         #默认请求
        location / {
            proxy_pass   http://127.0.0.1:3005;
        }
    }
}


第三组:吴景霞 C#用反射实现两个类的对象之间相同属性的值的复制

在进行实体转换操作的时候如果需要在对两个实体之间两个属性字段差不多相同的类要进行一个互相的转换,我们要把a对象的所有字段的值都复制给b对象,我们只能用b.属性=a.属性来写,如果属性字段太多的话,就要写很多行复制语句,麻烦还容易漏掉一些,这个时候可以利用c#的反射来实现复制。我们可以写这样一个利用泛型的映射函数。

适用于创建实体的时候从一个实体作为数据源赋值
/// <summary>
        /// 反射实现两个类的对象之间相同属性的值的复制
        /// 适用于初始化新实体
        /// </summary>
        /// <typeparam name="D">返回的实体</typeparam>
        /// <typeparam name="S">数据源实体</typeparam>
        /// <param name="s">数据源实体</param>
        /// <returns>返回的新实体</returns>
        public static D Mapper<D, S>(S s)
        {
            D d = Activator.CreateInstance<D>(); //构造新实例
            try
            {
                var Types = s.GetType();//获得类型  
                var Typed = typeof(D);
                foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段  
                {
                    foreach (PropertyInfo dp in Typed.GetProperties())
                    {
                        if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name!= "Error" && dp.Name != "Item")//判断属性名是否相同  
                        {
                            dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性  
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return d;
        }
适用于没有创建实体,两个实体之间数据的转换
/// <summary>
        /// 反射实现两个类的对象之间相同属性的值的复制
        /// 适用于没有新建实体之间
        /// </summary>
        /// <typeparam name="D">返回的实体</typeparam>
        /// <typeparam name="S">数据源实体</typeparam>
        /// <param name="d">返回的实体</param>
        /// <param name="s">数据源实体</param>
        /// <returns></returns>
        public static D MapperToModel<D, S>(D d,S s)
        {
            try
            {
                var Types = s.GetType();//获得类型  
                var Typed = typeof(D);
                foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段  
                {
                    foreach (PropertyInfo dp in Typed.GetProperties())
                    {
                        if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判断属性名是否相同  
                        {
                            dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性  
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return d;
        }

第四组:傅云 有规律的长字符串分割换行排序方法

若我们的字符串是有,或者;等有规律的排序的话,在页面中显示会出现排律不整齐或者自动断行换行的情况,故可采用将字符串分割后放入表格中的方法解决。

放入表格的方法可采用JS的自动拼接。


image.png

效果如下:


image.png

第五组:王颢

gridcontrol列格式化

eg:单元格添加颜色
在gridView1的RowCellStyle事件中添加如下代码:

if (e.RowHandle != bandedGridView1.FocusedRowHandle &&((e.RowHandle % 2 == 0 && e.Column.VisibleIndex % 2 == 1) ||(e.Column.VisibleIndex % 2 == 0 && e.RowHandle % 2 == 1)))
                e.Appearance.BackColor = Color.AliceBlue;
参考网址

http://blog.csdn.net/u013457167/article/details/42478857

winform关于AcceptButton和CanceleButton的问题


image.png
  • Form.AcceptButton 属性:取得或设定使用者按下 ENTER 键时所按下的表单上按钮,指派至这个属性的按钮必须是在目前表单上或位于目前窗体上容器内的IButtonControl(也就是只有按钮能用它)
private void Form1_Load(object sender, EventArgs e)
{
    this.AcceptButton = this.button2;
    this.CancelButton = this.button3;
}

详细看MSDN

这个属性允许您指定当用户在应用程序中按下 ENTER 键时所发生的预设动作。指派至这个属性的按钮必须是在目前窗体上或位于目前窗体上容器内的 IButtonControl。

您可以使用这个属性允许用户在完成时轻易地按下 ENTER 键,代替用鼠标手动地单击接受按钮,好让他们能够快速地巡览简单窗体。

如果目前在窗体上选取的控件会拦截 ENTER 键并作处理,则不可以启动接受按钮。例如,当选取它以插入换行符 (New Line Character) 至控件中时,多行文本框控件允许按下 ENTER 键。

想象一下如果用户在 textBox 填好数据后,不用鼠标,按 Enter 就能执行下一步的动作,是不是蛮方便的。

  • Form.CancelButton 属性:取得或设定使用者按下 ESC 键时所按下的按钮控件。

  • Form.AcceptButton 属性 :就是在抓你按下Enter键后,所要执行的按钮事件,经我实测发现这鬼东西在Form上的焦点要在非按钮上才有用喔!搭配 Focus方法 弹性又更大了。

  • Form.CancelButton 属性:不受控件的Focus影响,不管在哪按ESC都能很正常的工作。

  • 范例如下:

static int j=1;
static int i=1;
static int k = 1;
private void Form1_Load(object sender, EventArgs e)
{
    this.AcceptButton = this.button1;
    this.textBox1.Focus();
    this.textBox1.Select();
    this.CancelButton = this.button3;
} 

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = "按下了 button1: " +j.ToString()+" 次";
    this.textBox2.Focus();
    //this.textBox2.Select();
    j++;
    this.AcceptButton = this.button2;
} 

private void button2_Click(object sender, EventArgs e)
{
    textBox2.Text = "按下了 button2: " +i.ToString()+" 次";
    this.textBox1.Focus();
    //this.textBox1.Select();
    i++;
    this.AcceptButton = this.button1;
}
private void button3_Click(object sender, EventArgs e)
{
    textBox3.Text = "按下了 ESC: " + k.ToString() + " 次";
    k++;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 ...
    Moment__格调阅读 4,474评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,344评论 0 17
  • 北京揽宇方圆信息技术有限公司是致力于卫星遥感数据产业的推动与发展,集遥感信息数据处理、产品制作营销、信息系统和图像...
    北京揽宇方圆阅读 722评论 0 0
  • 行情过山车! 今天早上网点中午吃饭买东西后健身开会陪吃饭! 夜晚过山车行情貌似错过了。不过在我看来,真心看不懂,所...
    DeathKnightR阅读 250评论 0 0