成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET Web開發框架之四 查詢

開發 后端
Enterprise Solution 支持用戶自定義查詢(query and lookup),并把查詢query定義為一個標準功能,查找lookup用于返回查詢的值給數據輸入窗體。

Enterprise Solution 支持用戶自定義查詢(query and lookup),并把查詢query定義為一個標準功能,查找lookup用于返回查詢的值給數據輸入窗體。

先配置數據庫連接字符串,使用公司注冊來注冊一個新的數據庫連接。再到查詢設計器中,選取相應的對象,設計關聯,Web框架可以解析此查詢,變成一個頁面功能。

在客戶頁面中,添加TriggerBox,它的后面會顯示一個小圖標,以查于查找數據

  1.  <ext:TriggerBox ID="tbxCustomerNo" ShowLabel="true" Readonly="false" TriggerIcon="Search" 
  2.                             OnTriggerClick="tbxCustomerNo_TriggerClick" OnTextChanged="tbxCustomerNo_TextChanged" 
  3.                             AutoPostBack="true" Label="Customer No." runat="server" Lookup="CustomerEntryLookup" 
  4.                             DataBindingString="CustomerEntity:CustomerNo">  
  5. </ext:TriggerBox> 

再來看后臺代碼的處理模式

  1. string lookup = tbxCustomerNo.Lookup;  
  2.              tbxCustomerNo.OnClientTriggerClick = Window1.GetSaveStateReference(tbxCustomerNo.ClientID, HiddenField1.ClientID, HiddenField2.ClientID)  
  3.                + Window1.GetShowReference(string.Format("lookup.aspx?id={0}", lookup), "Look-up:Customer"); 

從上面的Web頁面中,我們已經指定了Lookup屬性為CustomerEntryLookup。這一句是把Lookup與頁面的Window1關聯,以用于彈出窗口,同時指定了頁面的HiddenField1為接受Lookup的返回值,***調用窗口的回發刷新過程,進行頁面刷新,代碼如下

  1. protected void Window1_Close(object sender, EventArgs e)  
  2. {  
  3.             string customerNo = tbxCustomerNo.Text;  
  4.             if (!string.IsNullOrWhiteSpace(customerNo))  
  5.             {  
  6.                 ReloadEntity(customerNo);              
  7.             }  
  8. }     

這樣就完成了查詢頁面的彈出選擇值,返回值給主窗體,***刷新主窗體。

再來看看lookup.aspx頁面是如何設計的,它接受一個查詢id為參數,這個參數,也就是我們指定的CustomerEntryLookup,在查詢設計器中,它是這樣被設計的

image

lookup.aspx頁面接受傳入的參數,它的初試化頁面是這樣設計的

  1. protected void Page_Init(object sender, EventArgs e)  
  2. {  
  3.             LookupName = Request.QueryString["id"];  
  4.            
  5.             ILookupDialogManager _lookupDialogManager = ClientProxyFactory.CreateProxyInstance<ILookupDialogManager>();  
  6.             string companycode = "TS";  
  7.             DataTable table = _lookupDialogManager.GetLookupDialogData(LookupName, nullnull, 0, 0, companycode);  
  8.             Grid1.RecordCount = table.Rows.Count;  
  9.  
  10.               BindGrid();  
  11.              

根據查詢,得到記錄總數,進行分頁查詢,這里的代碼是Grid的分頁代碼,來看看BindGrid方法的定義,并不復雜。

  1. private void BindGrid()  
  2. {  
  3.             DataSet ds = LoadData(Grid1.PageIndex+1);  
  4.  
  5.             while (Grid1.Columns.Count > 0)  
  6.                 Grid1.Columns.RemoveAt(0);  
  7.  
  8.             foreach (DataColumn colu in ds.Tables[0].Columns)  
  9.             {  
  10.                 ExtAspNet.BoundField field = new ExtAspNet.BoundField();  
  11.                 field.ColumnID = colu.ColumnName;  
  12.                 field.DataField = colu.ColumnName;  
  13.                 field.HeaderText = GetTranslation(colu.ColumnName);  
  14.                 Grid1.Columns.Add(field);  
  15.             }  
  16.  
  17.             Grid1.PageSize = PageSize;  
  18.             
  19.             Grid1.DataSource = ds.Tables[0];  
  20.             Grid1.DataBind();  
  21.  } 

它先刪除grid中原有的列,然后根據結果產生新的列,并對列名應用多語言翻譯。這里要注意動態控件的創建時機,要選擇在Page_Init中,而不是Page_Load中。在Debug時,看到的分頁代碼是數據庫分頁,每次只返回設定的行數。

Grid的分頁事件樣例代碼如下所示,與GridView完全一樣

  1. protected void Grid1_PageIndexChange(object sender, ExtAspNet.GridPageEventArgs e)  
  2. {  
  3.          Grid1.PageIndex = e.NewPageIndex;  
  4.          BindGrid();  

下面來看看lookup.aspx頁面的二個按鈕方法的代碼。最簡單的是Close,直接關閉窗體,不返回任何值給主窗體,它的代碼最容易,如下所示

  1. btnClose.OnClientClick = ActiveWindow.GetHideReference(); 

復雜一點的,關閉后帶值到主窗體中,代碼如下所示

  1. protected void btnSaveClose_Click(object sender, EventArgs e)  
  2. {  
  3.             int rowIndex = Grid1.SelectedRowIndex;  
  4.             GridRow row = Grid1.Rows[rowIndex];  
  5.  
  6.             ILookupDialogManager lookupManager=ClientProxyFactory.CreateProxyInstance<ILookupDialogManager>();  
  7.             LookupDialogEntity lookup = lookupManager.GetLookupDialog(LookupName);  
  8.             List<string> keyFields = new List<string>();  
  9.         
  10.             keyFields.Add(lookup.KeyField1);  
  11.             keyFields.Add(lookup.KeyField2);  
  12.             keyFields.Add(lookup.KeyField3);  
  13.  
  14.             List<string> values = new List<string>();  
  15.             foreach (string keyField in keyFields)  
  16.             {  
  17.                 string value = string.Empty;  
  18.                 if (!string.IsNullOrWhiteSpace(keyField))  
  19.                 {  
  20.                     ExtAspNet.BoundField field = (ExtAspNet.BoundField)Grid1.FindColumn(keyField);  
  21.                     string f1 = field.DataField;  
  22.                     object f2 = Grid1.Rows[rowIndex].States[field.ColumnIndex];  
  23.                     value = Convert.ToString(((DataRowView)(Grid1.Rows[rowIndex].DataItem))[keyField]);                
  24.                 }  
  25.                 values.Add(value);  
  26.             }  
  27.             PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(values[0], values[1], values[2]) + ActiveWindow.GetHidePostBackReference());  
  28.  } 

這部分代碼,有兩個意圖,取Grid中的值,然后返回給主窗體,因為要刷新主窗體,所以***加一項GetHidePostBackReference(),讓主窗體回發,以調用在文章開頭設計的Window1_Close,ReloadEntity完成對實體的重新綁定。

查詢query與查找lookup的實現原理是一樣的,都用于自定義的查找數據。query用于相對獨立的功能,是可執行的,lookup則用于字段值的查找與返回,方便窗體數據輸入。查詢設計器中,不僅僅用對象設計查詢,也可以直接輸入SQL語句,或是調用存儲過程來實現。

image

這樣很方便于用戶擴充系統查詢功能,而不需要二次開發。

原文鏈接:http://www.cnblogs.com/JamesLi2015/archive/2012/09/25/2700992.html

【編輯推薦】

  1. ASP.NET Web開發框架項目介紹
  2. ASP.NET Web開發框架之一 功能導航
  3. ASP.NET Web開發框架之二 數據輸入窗體
  4. ASP.NET Web開發框架之三 報表開發
  5. ASP.NET Web開發框架之五 控件擴展
  6. ASP.NET Web開發框架之六 數據庫文檔方法
  7. ASP.NET Web開發框架之七 開發流程與模式
責任編輯:張偉 來源: James Li的博客
相關推薦

2012-09-26 09:46:29

ASP.NETWeb框架

2012-09-18 11:02:10

ASP.NETC#Web Forms

2012-10-08 14:01:54

ASP.NETWebC

2012-09-20 09:54:12

ASP.NETWebC

2012-09-18 14:32:08

ASP.NETC#

2012-09-29 13:20:30

ASP.NETWeb框架

2009-07-29 09:38:06

Web開發ASP.NET

2012-09-19 14:10:58

ASP.NETWebC

2009-07-28 17:17:19

ASP.NET概述

2009-07-24 13:20:44

MVC框架ASP.NET

2014-06-30 09:22:38

ASP.NETBootstrap

2009-08-07 17:41:07

ASP.NET Web

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-04-20 13:34:27

ASP.NET視頻教程Web開發

2010-06-23 15:44:03

ASP.NET MVC

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設計

2009-07-28 15:53:43

ASP.NET Web

2009-07-29 17:16:47

2009-07-24 10:14:22

ASP.NET開發

2009-07-20 10:53:59

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产免费人成在线观看 | 日韩一区精品 | 国产一区 | 国产欧美精品区一区二区三区 | 国产一区免费 | 一级毛片色一级 | 久久精品色欧美aⅴ一区二区 | av网址在线 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | av大片 | 欧美一区二区三区国产 | 色综合天天天天做夜夜夜夜做 | 一级毛片观看 | 欧美淫 | 免费黄色片视频 | 日韩精品免费 | 综合久久综合久久 | 国产福利资源在线 | 国产精品高潮呻吟久久 | www.精品一区| 日韩欧美在 | 一区二区三区国产视频 | 精品视频免费在线 | 一区二区视频 | 国产精品久久久久久久岛一牛影视 | 久久中文视频 | 91精品国产色综合久久不卡98口 | 国产一区二区欧美 | 久久大| 三极网站| 二区欧美 | 久久久一区二区三区 | 狠狠干天天干 | 日韩av一区二区在线观看 | 国产av毛片 | 性精品| 成人精品鲁一区一区二区 | 中日字幕大片在线播放 | 成人久久久 | 日韩欧美不卡 | 国产精品久久久久久久一区探花 |