本文目錄
通過實(shí)例學(xué)習(xí)Fireasy開發(fā)(上篇)
通過實(shí)例學(xué)習(xí)Fireasy開發(fā)(中篇)
通過實(shí)例學(xué)習(xí)Fireasy開發(fā)(下篇)
通過實(shí)例學(xué)習(xí)Fireasy開發(fā)(補(bǔ)充/示例代碼下載)
一、員工列表頁面
EmployeeList.aspx頁面的需求是這樣的,左邊是部門樹,右邊是員工列表,點(diǎn)擊部門節(jié)點(diǎn)后右邊顯示該部門下面的員工,同時(shí)提供崗位、生日期間查詢。
對table:#dg處進(jìn)行改造,加下一個(gè)treegrid列表:
<div data-options="region:'center',border:false"> <div id="layout" class="easyui-layout" data-options="fit:true,border:false"> <div data-options="region:'west',border:false,split:true" style="width:220px"> <table id="dgDept"> </table> </div> <div data-options="region:'center',border:false"> <table id="dg"> </table> </div> </div> </div>
然后在js里加入一個(gè)loadDepts函數(shù),并且一開始就加載部門樹:
        $(function () {            loadDepts();            loadData();        })        function loadDepts() {            $('#dgDept').treegrid({                url: 'DeptList.ajx/GetDepts',                fit: true,//自動填充                idField: 'id',                treeField: 'text',                columns: [[                    { field: 'text', title: '部門', width: 180 }                ]],                onClickRow: function (row) {                    $('#dg').datagrid({                        queryParams: { deptNo: row.attributes.no }                    });                }            })        }修改loadData函數(shù),把不需要的列移除掉,然后,瀏覽EmployeeList.aspx頁面,顯示如下:

loadDepts函數(shù)里,treegrid的onClickRow事件里,datagrid將使用no作為條件篩選員工數(shù)據(jù)。修改EmployeeList.aspx.cs類中的GetEmployees方法,增加一個(gè)參數(shù)deptNo,如下:
/// <summary> /// 根據(jù)查詢條件獲取員工。 /// </summary> /// <param name="deptNo">部門編碼。</param> /// <param name="keyWord">關(guān)鍵字</param> /// <returns></returns> [ExceptionBehavior(true)] public object GetEmployees(string deptNo, string keyword) { var pager = EasyUIHelper.GetDataPager(); var sorting = EasyUIHelper.GetSorting(); using (var context = new DbContext()) { var list = context.Employees .Segment(pager) //.OrderBy(sorting) .AssertWhere(!string.IsNullOrEmpty(deptNo), s => s.Dept.No.StartsWith(deptNo)) //.AssertWhere(!string.IsNullOrEmpty(keyword), s => s.Name.Contains(keyword)) .ToList(); return EasyUIHelper.Transfer(pager, list); } }
AssertWhere是一個(gè)擴(kuò)展方法,來自Fireasy.Common.Extensions,如果deptNo不為空的時(shí)候,使用Dept這個(gè)關(guān)聯(lián)屬性的No進(jìn)行l(wèi)ike查詢,也就是說TB_EMPLOYEE join 上 TB_DEPT查詢。
EasyUIHelper的GetDataPager用于構(gòu)造easyui-datagrid傳遞過來的兩個(gè)分頁參數(shù),構(gòu)造出一個(gè)分頁對象pager,Linq再使用Segment擴(kuò)展方法將pager傳進(jìn)去分頁。最后,使用Transfer方法把結(jié)果轉(zhuǎn)換為 { total: 10, rows: [] } 這樣的json結(jié)構(gòu)。
增加額外的查詢條件。
我們在EmployeeList.aspx的query區(qū)加入日期和崗位查詢條件。
<div class="query"> <table> <tr> <td>出生日期</td> <td><input id="txtStartTime" class="easyui-datebox" style="width:110px" /></td> <td>至</td> <td><input id="txtEndTime" class="easyui-datebox" style="width:110px" /></td> <td>崗位</td> <td><input id="txtPost" class="easyui-combobox" data-options="url:'EmployeeList.ajx/GetPosts',valueField:'Value',textField:'Name',panelHeight:'auto'" style="width:110px" /></td> <td>快速查詢</td> <td> <input id="txtKeyword" type="text" class="easyui-textbox enterQuery" data-options="在EmployeeList.aspx.cs里增加方法GetPosts,該方法用于獲取崗位代碼,崗位代碼我們先用枚舉來表示。
枚舉定義在WebApplicaiton1.Data的Enums.cs里。對了,還需要一個(gè)性別的枚舉,這個(gè)時(shí)候一起定義好了。
public enum PostKinds { [EnumDescrEnumDescriptionAttribute是用于標(biāo)記中文描述的特性。
GetPosts方法就是將該中文描述和枚舉值返回給前臺。
public object GetPosts() { var list = typeof(PostKinds).GetEnumList() .Select(s => new { Value = s.Key.ToString(), Name = s.Value }) .ToList(); list.Insert(0, new { Value = "", Name = "--全部--" }); return list; }修改EmployeeList.aspx中的query函數(shù),加入查詢條件:
//查詢 function query() { $('#dg').datagrid('unselectAll'); $('#dg').datagrid({ queryParams: { startTime: $('#txtStartTime').datebox('getValue'), endTime: $('#txtEndTime').datebox('getValue'), post: $('#txtPost').combobox('getValue'), keyword: $('#txtKeyword').val() } }); }相應(yīng)的在EmployeeList.aspx.cs中,修改GetEmployees方法,加入這三個(gè)參數(shù)。
/// <summary> /// 根據(jù)查詢條件獲取員工。 /// </summary> /// <param name="deptNo">部門編碼。</param> /// <param name="startTime">開始日期。</param> /// <param name="endTime">結(jié)束時(shí)間。</param> /// <param name="post">崗位類別。</param> /// <param name="keyword">關(guān)鍵字</param> /// <returns></returns> [ExceptionBehavior(true)] public object GetEmployees(string deptNo, DateTime? startTime, DateTime? endTime, PostKinds? post, string keyword) { var pager = EasyUIHelper.GetDataPager(); var sorting = EasyUIHelper.GetSorting(); using (var context = new DbContext()) { var list = context.Employees .Segment(pager) //.OrderBy(sorting) .AssertWhere(!string.IsNullOrEmpty(deptNo), s => s.Dept.No.StartsWith(deptNo)) .AssertWhere(startTime != null, s => s.Birthday >= startTime.Value.StartOfDay()) .AssertWhere(endTime != null, s => s.Birthday <= endTime.Value.EndOfDay()) .AssertWhere(post != null, s => s.Post == post) .AssertWhere(!string.IsNullOrEmpty(keyword), s => s.Name.Contains(keyword)) .ToList(); return EasyUIHelper.Transfer(pager, list); } }注意,由于日期可以置空,所以參數(shù)中應(yīng)使用可空類型,然后使用AssertWhere擴(kuò)展方法來拼接LINQ。
參數(shù)post使用了PostKinds枚舉類型,我們需要修改一個(gè)Employee實(shí)體類型的Post屬性類型由原來的int?改成PostKinds:
/// <summary> /// 獲取或設(shè)置職務(wù)。 /// </summary> public PostKinds Post { get { return (PostKinds)GetValue(EpPost); } set { SetValue(EpPost, value); } }好了,員工列表頁面至此就做完了。
二、員工編輯頁面
打開EmployeeEdit.aspx,調(diào)整表單區(qū)域如下:
<% var Html = new HtmlHelper<Webapplication.Data.Model.Employee>
新聞熱點(diǎn)
疑難解答
圖片精選