日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ASP.NETWeb開(kāi)發(fā)框架之四查詢

Enterprise Solution 支持用戶自定義查詢(query and lookup),并把查詢query定義為一個(gè)標(biāo)準(zhǔn)功能,查找lookup用于返回查詢的值給數(shù)據(jù)輸入窗體。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的古藺網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

先配置數(shù)據(jù)庫(kù)連接字符串,使用公司注冊(cè)來(lái)注冊(cè)一個(gè)新的數(shù)據(jù)庫(kù)連接。再到查詢?cè)O(shè)計(jì)器中,選取相應(yīng)的對(duì)象,設(shè)計(jì)關(guān)聯(lián),Web框架可以解析此查詢,變成一個(gè)頁(yè)面功能。

在客戶頁(yè)面中,添加TriggerBox,它的后面會(huì)顯示一個(gè)小圖標(biāo),以查于查找數(shù)據(jù)

  
 
 
 
  1.  
  2.                             OnTriggerClick="tbxCustomerNo_TriggerClick" OnTextChanged="tbxCustomerNo_TextChanged"
  3.                             AutoPostBack="true" Label="Customer No." runat="server" Lookup="CustomerEntryLookup"
  4.                             DataBindingString="CustomerEntity:CustomerNo">

再來(lái)看后臺(tái)代碼的處理模式

  
 
 
 
  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頁(yè)面中,我們已經(jīng)指定了Lookup屬性為CustomerEntryLookup。這一句是把Lookup與頁(yè)面的Window1關(guān)聯(lián),以用于彈出窗口,同時(shí)指定了頁(yè)面的HiddenField1為接受Lookup的返回值,***調(diào)用窗口的回發(fā)刷新過(guò)程,進(jìn)行頁(yè)面刷新,代碼如下

  
 
 
 
  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. }    

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

再來(lái)看看lookup.aspx頁(yè)面是如何設(shè)計(jì)的,它接受一個(gè)查詢id為參數(shù),這個(gè)參數(shù),也就是我們指定的CustomerEntryLookup,在查詢?cè)O(shè)計(jì)器中,它是這樣被設(shè)計(jì)的

lookup.aspx頁(yè)面接受傳入的參數(shù),它的初試化頁(yè)面是這樣設(shè)計(jì)的

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

根據(jù)查詢,得到記錄總數(shù),進(jìn)行分頁(yè)查詢,這里的代碼是Grid的分頁(yè)代碼,來(lái)看看BindGrid方法的定義,并不復(fù)雜。

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

它先刪除grid中原有的列,然后根據(jù)結(jié)果產(chǎn)生新的列,并對(duì)列名應(yīng)用多語(yǔ)言翻譯。這里要注意動(dòng)態(tài)控件的創(chuàng)建時(shí)機(jī),要選擇在Page_Init中,而不是Page_Load中。在Debug時(shí),看到的分頁(yè)代碼是數(shù)據(jù)庫(kù)分頁(yè),每次只返回設(shè)定的行數(shù)。

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

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

下面來(lái)看看lookup.aspx頁(yè)面的二個(gè)按鈕方法的代碼。最簡(jiǎn)單的是Close,直接關(guān)閉窗體,不返回任何值給主窗體,它的代碼最容易,如下所示

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

復(fù)雜一點(diǎn)的,關(guān)閉后帶值到主窗體中,代碼如下所示

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

這部分代碼,有兩個(gè)意圖,取Grid中的值,然后返回給主窗體,因?yàn)橐⑿轮鞔绑w,所以***加一項(xiàng)GetHidePostBackReference(),讓主窗體回發(fā),以調(diào)用在文章開(kāi)頭設(shè)計(jì)的Window1_Close,ReloadEntity完成對(duì)實(shí)體的重新綁定。

查詢query與查找lookup的實(shí)現(xiàn)原理是一樣的,都用于自定義的查找數(shù)據(jù)。query用于相對(duì)獨(dú)立的功能,是可執(zhí)行的,lookup則用于字段值的查找與返回,方便窗體數(shù)據(jù)輸入。查詢?cè)O(shè)計(jì)器中,不僅僅用對(duì)象設(shè)計(jì)查詢,也可以直接輸入SQL語(yǔ)句,或是調(diào)用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)。

這樣很方便于用戶擴(kuò)充系統(tǒng)查詢功能,而不需要二次開(kāi)發(fā)。


名稱欄目:ASP.NETWeb開(kāi)發(fā)框架之四查詢
文章URL:http://www.dlmjj.cn/article/djedhsc.html