第一組:陳輝 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配置
由瀏覽器的同源策略严里,瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,此時需要解決跨域問題追城。用nginx反向代理實(shí)現(xiàn)跨域刹碾,是最簡單的跨域方式,只需要修改nginx的配置即可解決跨域問題座柱。我們只需要配置nginx迷帜,在一個服務(wù)器上配置多個前綴來轉(zhuǎn)發(fā)http/https請求到多個真實(shí)的服務(wù)器即可。這樣色洞,這個服務(wù)器上所有url都是相同的域名戏锹、協(xié)議和端口。因此火诸,對于瀏覽器來說锦针,這些url都是同源的,沒有跨域限制置蜀。而實(shí)際上奈搜,這些url實(shí)際上由物理服務(wù)器提供服務(wù)。這些服務(wù)器內(nèi)的javascript可以跨域調(diào)用所有這些服務(wù)器上的url盯荤。
如圖1-1所示馋吗,為nginx文件結(jié)構(gòu)。
全局塊:配置影響nginx全局的指令秋秤。一般有運(yùn)行nginx服務(wù)器的用戶組宏粤,nginx進(jìn)程pid存放路徑脚翘,日志存放路徑,配置文件引入绍哎,允許生成worker process數(shù)等来农。
events塊:配置影響nginx服務(wù)器或與用戶的網(wǎng)絡(luò)連接。有每個進(jìn)程的最大連接數(shù)崇堰,選取哪種事件驅(qū)動模型處理連接請求备图,是否允許同時接受多個網(wǎng)路連接,開啟多個網(wǎng)絡(luò)連接序列化等赶袄。
http塊:可以嵌套多個server揽涮,配置代理,緩存饿肺,日志定義等絕大多數(shù)功能和第三方模塊的配置蒋困。如文件引入,mime-type定義敬辣,日志自定義雪标,是否使用sendfile傳輸文件,連接超時時間溉跃,單連接請求數(shù)等村刨。
server塊:配置虛擬主機(jī)的相關(guān)參數(shù),一個http中可以有多個server撰茎。
location塊:配置請求的路由嵌牺,以及各種頁面的處理情況。
以下是掌上長龍的nginx配置詳情及注釋:
#啟動進(jìn)程,通常設(shè)置成和cpu的數(shù)量相等
worker_processes 1;
#工作模式及連接數(shù)上限
events {
#單個后臺worker process進(jìn)程的最大并發(fā)鏈接數(shù)
worker_connections 1024;
}
http {
#設(shè)定mime類型,類型由mime.type文件定義
include mime.types;
default_type application/octet-stream;
#sendfile 指令指定 nginx 是否調(diào)用 sendfile 函數(shù)(zero copy 方式)來輸出文件龄糊,
#對于普通應(yīng)用逆粹,必須設(shè)為 on,
#如果用來進(jìn)行下載等應(yīng)用磁盤IO重負(fù)載應(yīng)用,可設(shè)置為 off炫惩,
#以平衡磁盤與網(wǎng)絡(luò)I/O處理速度僻弹,降低系統(tǒng)的uptime.
sendfile on;
#連接超時時間
#keepalive_timeout 0;
keepalive_timeout 65;
#設(shè)定虛擬主機(jī)配置
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;
}
#默認(rèn)請求
location / {
proxy_pass http://127.0.0.1:3005;
}
}
}
第三組:吳景霞 C#用反射實(shí)現(xiàn)兩個類的對象之間相同屬性的值的復(fù)制
在進(jìn)行實(shí)體轉(zhuǎn)換操作的時候如果需要在對兩個實(shí)體之間兩個屬性字段差不多相同的類要進(jìn)行一個互相的轉(zhuǎn)換,我們要把a(bǔ)對象的所有字段的值都復(fù)制給b對象他嚷,我們只能用b.屬性=a.屬性來寫蹋绽,如果屬性字段太多的話,就要寫很多行復(fù)制語句筋蓖,麻煩還容易漏掉一些卸耘,這個時候可以利用c#的反射來實(shí)現(xiàn)復(fù)制。我們可以寫這樣一個利用泛型的映射函數(shù)扭勉。
適用于創(chuàng)建實(shí)體的時候從一個實(shí)體作為數(shù)據(jù)源賦值
/// <summary>
/// 反射實(shí)現(xiàn)兩個類的對象之間相同屬性的值的復(fù)制
/// 適用于初始化新實(shí)體
/// </summary>
/// <typeparam name="D">返回的實(shí)體</typeparam>
/// <typeparam name="S">數(shù)據(jù)源實(shí)體</typeparam>
/// <param name="s">數(shù)據(jù)源實(shí)體</param>
/// <returns>返回的新實(shí)體</returns>
public static D Mapper<D, S>(S s)
{
D d = Activator.CreateInstance<D>(); //構(gòu)造新實(shí)例
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對象屬性的值復(fù)制給d對象的屬性
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return d;
}
適用于沒有創(chuàng)建實(shí)體鹊奖,兩個實(shí)體之間數(shù)據(jù)的轉(zhuǎn)換
/// <summary>
/// 反射實(shí)現(xiàn)兩個類的對象之間相同屬性的值的復(fù)制
/// 適用于沒有新建實(shí)體之間
/// </summary>
/// <typeparam name="D">返回的實(shí)體</typeparam>
/// <typeparam name="S">數(shù)據(jù)源實(shí)體</typeparam>
/// <param name="d">返回的實(shí)體</param>
/// <param name="s">數(shù)據(jù)源實(shí)體</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對象屬性的值復(fù)制給d對象的屬性
}
}
}
}
catch (Exception ex)
{
throw ex;
}
return d;
}
第四組:傅云 有規(guī)律的長字符串分割換行排序方法
若我們的字符串是有,或者涂炎;等有規(guī)律的排序的話忠聚,在頁面中顯示會出現(xiàn)排律不整齊或者自動斷行換行的情況,故可采用將字符串分割后放入表格中的方法解決唱捣。
放入表格的方法可采用JS的自動拼接两蟀。
效果如下:
第五組:王顥
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;
參考網(wǎng)址
http://blog.csdn.net/u013457167/article/details/42478857
winform關(guān)于AcceptButton和CanceleButton的問題
- Form.AcceptButton 屬性:取得或設(shè)定使用者按下 ENTER 鍵時所按下的表單上按鈕,指派至這個屬性的按鈕必須是在目前表單上或位于目前窗體上容器內(nèi)的IButtonControl(也就是只有按鈕能用它)
private void Form1_Load(object sender, EventArgs e)
{
this.AcceptButton = this.button2;
this.CancelButton = this.button3;
}
詳細(xì)看MSDN
這個屬性允許您指定當(dāng)用戶在應(yīng)用程序中按下 ENTER 鍵時所發(fā)生的預(yù)設(shè)動作震缭。指派至這個屬性的按鈕必須是在目前窗體上或位于目前窗體上容器內(nèi)的 IButtonControl赂毯。
您可以使用這個屬性允許用戶在完成時輕易地按下 ENTER 鍵,代替用鼠標(biāo)手動地單擊接受按鈕拣宰,好讓他們能夠快速地巡覽簡單窗體党涕。
如果目前在窗體上選取的控件會攔截 ENTER 鍵并作處理,則不可以啟動接受按鈕巡社。例如膛堤,當(dāng)選取它以插入換行符 (New Line Character) 至控件中時,多行文本框控件允許按下 ENTER 鍵晌该。
想象一下如果用戶在 textBox 填好數(shù)據(jù)后肥荔,不用鼠標(biāo),按 Enter 就能執(zhí)行下一步的動作朝群,是不是蠻方便的燕耿。
Form.CancelButton 屬性:取得或設(shè)定使用者按下 ESC 鍵時所按下的按鈕控件。
Form.AcceptButton 屬性 :就是在抓你按下Enter鍵后姜胖,所要執(zhí)行的按鈕事件誉帅,經(jīng)我實(shí)測發(fā)現(xiàn)這鬼東西在Form上的焦點(diǎn)要在非按鈕上才有用喔!搭配 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++;
}