本篇文章為大家展示了如何進(jìn)行ASP.NET Web開發(fā)框架中的查詢,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了清流免費(fèi)建站歡迎大家使用!
Enterprise Solution 支持用戶自定義查詢(query and lookup),并把查詢query定義為一個(gè)標(biāo)準(zhǔn)功能,查找lookup用于返回查詢的值給數(shù)據(jù)輸入窗體。
先配置數(shù)據(jù)庫連接字符串,使用公司注冊來注冊一個(gè)新的數(shù)據(jù)庫連接。再到查詢設(shè)計(jì)器中,選取相應(yīng)的對象,設(shè)計(jì)關(guān)聯(lián),Web框架可以解析此查詢,變成一個(gè)頁面功能。
在客戶頁面中,添加TriggerBox,它的后面會(huì)顯示一個(gè)小圖標(biāo),以查于查找數(shù)據(jù)
<ext:TriggerBox ID="tbxCustomerNo" ShowLabel="true" Readonly="false" TriggerIcon="Search" OnTriggerClick="tbxCustomerNo_TriggerClick" OnTextChanged="tbxCustomerNo_TextChanged" AutoPostBack="true" Label="Customer No." runat="server" Lookup="CustomerEntryLookup" DataBindingString="CustomerEntity:CustomerNo"> </ext:TriggerBox>
再來看后臺代碼的處理模式
string lookup = tbxCustomerNo.Lookup; tbxCustomerNo.OnClientTriggerClick = Window1.GetSaveStateReference(tbxCustomerNo.ClientID, HiddenField1.ClientID, HiddenField2.ClientID) + Window1.GetShowReference(string.Format("lookup.aspx?id={0}", lookup), "Look-up:Customer");
從上面的Web頁面中,我們已經(jīng)指定了Lookup屬性為CustomerEntryLookup。這一句是把Lookup與頁面的Window1關(guān)聯(lián),以用于彈出窗口,同時(shí)指定了頁面的HiddenField1為接受Lookup的返回值,***調(diào)用窗口的回發(fā)刷新過程,進(jìn)行頁面刷新,代碼如下
protected void Window1_Close(object sender, EventArgs e) { string customerNo = tbxCustomerNo.Text; if (!string.IsNullOrWhiteSpace(customerNo)) { ReloadEntity(customerNo); } }
這樣就完成了查詢頁面的彈出選擇值,返回值給主窗體,***刷新主窗體。
再來看看lookup.aspx頁面是如何設(shè)計(jì)的,它接受一個(gè)查詢id為參數(shù),這個(gè)參數(shù),也就是我們指定的CustomerEntryLookup,在查詢設(shè)計(jì)器中,它是這樣被設(shè)計(jì)的
lookup.aspx頁面接受傳入的參數(shù),它的初試化頁面是這樣設(shè)計(jì)的
protected void Page_Init(object sender, EventArgs e) { LookupName = Request.QueryString["id"]; ILookupDialogManager _lookupDialogManager = ClientProxyFactory.CreateProxyInstance<ILookupDialogManager>(); string companycode = "TS"; DataTable table = _lookupDialogManager.GetLookupDialogData(LookupName, null, null, 0, 0, companycode); Grid1.RecordCount = table.Rows.Count; BindGrid(); }
根據(jù)查詢,得到記錄總數(shù),進(jìn)行分頁查詢,這里的代碼是Grid的分頁代碼,來看看BindGrid方法的定義,并不復(fù)雜。
private void BindGrid() { DataSet ds = LoadData(Grid1.PageIndex+1); while (Grid1.Columns.Count > 0) Grid1.Columns.RemoveAt(0); foreach (DataColumn colu in ds.Tables[0].Columns) { ExtAspNet.BoundField field = new ExtAspNet.BoundField(); field.ColumnID = colu.ColumnName; field.DataField = colu.ColumnName; field.HeaderText = GetTranslation(colu.ColumnName); Grid1.Columns.Add(field); } Grid1.PageSize = PageSize; Grid1.DataSource = ds.Tables[0]; Grid1.DataBind(); }
它先刪除grid中原有的列,然后根據(jù)結(jié)果產(chǎn)生新的列,并對列名應(yīng)用多語言翻譯。這里要注意動(dòng)態(tài)控件的創(chuàng)建時(shí)機(jī),要選擇在Page_Init中,而不是Page_Load中。在Debug時(shí),看到的分頁代碼是數(shù)據(jù)庫分頁,每次只返回設(shè)定的行數(shù)。
Grid的分頁事件樣例代碼如下所示,與GridView完全一樣
protected void Grid1_PageIndexChange(object sender, ExtAspNet.GridPageEventArgs e) { Grid1.PageIndex = e.NewPageIndex; BindGrid(); }
下面來看看lookup.aspx頁面的二個(gè)按鈕方法的代碼。最簡單的是Close,直接關(guān)閉窗體,不返回任何值給主窗體,它的代碼最容易,如下所示
btnClose.OnClientClick = ActiveWindow.GetHideReference();
復(fù)雜一點(diǎn)的,關(guān)閉后帶值到主窗體中,代碼如下所示
protected void btnSaveClose_Click(object sender, EventArgs e) { int rowIndex = Grid1.SelectedRowIndex; GridRow row = Grid1.Rows[rowIndex]; ILookupDialogManager lookupManager=ClientProxyFactory.CreateProxyInstance<ILookupDialogManager>(); LookupDialogEntity lookup = lookupManager.GetLookupDialog(LookupName); List<string> keyFields = new List<string>(); keyFields.Add(lookup.KeyField1); keyFields.Add(lookup.KeyField2); keyFields.Add(lookup.KeyField3); List<string> values = new List<string>(); foreach (string keyField in keyFields) { string value = string.Empty; if (!string.IsNullOrWhiteSpace(keyField)) { ExtAspNet.BoundField field = (ExtAspNet.BoundField)Grid1.FindColumn(keyField); string f1 = field.DataField; object f2 = Grid1.Rows[rowIndex].States[field.ColumnIndex]; value = Convert.ToString(((DataRowView)(Grid1.Rows[rowIndex].DataItem))[keyField]); } values.Add(value); } PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(values[0], values[1], values[2]) + ActiveWindow.GetHidePostBackReference()); }
這部分代碼,有兩個(gè)意圖,取Grid中的值,然后返回給主窗體,因?yàn)橐⑿轮鞔绑w,所以***加一項(xiàng)GetHidePostBackReference(),讓主窗體回發(fā),以調(diào)用在文章開頭設(shè)計(jì)的Window1_Close,ReloadEntity完成對實(shí)體的重新綁定。
查詢query與查找lookup的實(shí)現(xiàn)原理是一樣的,都用于自定義的查找數(shù)據(jù)。query用于相對獨(dú)立的功能,是可執(zhí)行的,lookup則用于字段值的查找與返回,方便窗體數(shù)據(jù)輸入。查詢設(shè)計(jì)器中,不僅僅用對象設(shè)計(jì)查詢,也可以直接輸入SQL語句,或是調(diào)用存儲過程來實(shí)現(xiàn)。
這樣很方便于用戶擴(kuò)充系統(tǒng)查詢功能,而不需要二次開發(fā)。
上述內(nèi)容就是如何進(jìn)行ASP.NET Web開發(fā)框架中的查詢,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標(biāo)題:如何進(jìn)行ASP.NETWeb開發(fā)框架中的查詢
分享網(wǎng)址:http://jinyejixie.com/article24/iicije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、域名注冊、做網(wǎng)站、網(wǎng)站營銷、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)