主頁 > .NET開發 > smobiler仿餓了么app搜索頁面

smobiler仿餓了么app搜索頁面

2021-04-01 15:12:44 .NET開發

餓了么-搜索頁面如下圖所示:

image

 

完整代碼見git :https://github.com/comsmobiler/BlogsCode

創建表單

創建一個smobilerForm ,檔案名設定ElmSearch, 將表單的Layout設定Relative,再設定表單的Statusbar屬性

image

并在表單中拖入Panel和ListView,Panel.Height 設定40,Listview.Flex設定1 ,Listview的模板類設定成ListLayout

image

 

實作搜索框

將上圖的panel1.Layout設定Relative,panel1.Direction設定Row,panel1.Padding設定(6,6,6,6),panel1.Size設定為(0,40),

在panel1中拖入imageButton1,

imageButton1.ImagtType設定FontIcon,

imageButton1.ResourceID設定” angle-left” ,

imageButton1.Size設定(27,0),

在imageButton1的點擊事件中寫this.Close();

接著在panel1中拖入panel2,

panel2.BorderRadius設定12,

panel2.Direction設定Row,

panel2.ItemAlign設定Center,

panel2.Layout設定Relative,

panel2.Touchable設定true,

panel2.BackColor設定WhiteSmoke,

panel2.Magrin設定(6,0,0,0),

panel2.Flex設定1 ,

在panel2 中加入fonticon控制元件,

fontIcon1.Location設定(6,0),

fontIcon1.Size設定(15,15),

fontIcon1.ForeColor設定Gainsboro,

fontIcon1.Resource設定”search”

在panel2中繼續加入Label控制元件,Label控制元件的Name設定KeyLab,

KeyLab.Flex設定1

KeyLab.ForeColor設定Gainsboro

KeyLab.Location設定(6,0,0,0)

KeyLab.Margin設定(6,0,0,0)

KeyLab.Padding設定(4,0,0,0)

KeyLab.Text設定”曼玲粥店”

創建SmobilerUserControl

創建一個SmobilerUserControl,檔案名設定ElmLayout, 將ElmLayout.Layout設定Relative,BackColor s設定White,Flex設定1

image

上圖panel1 用來實作搜索框,步驟和前面一樣,只是ELmLayout中的KeyLab改成TextBox控制元件,最后在ElmLayout中拖入兩個panel,分別命名為hisPanel和disPanel,這兩個Panel的Size設定(0,0),這樣設計器部分就完成了,

代碼

ElmSearch.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data;
 4 using System.Linq;
 5 using System.Text;
 6 using SelectDemo.Layouts;
 7 using Smobiler.Core;
 8 using Smobiler.Core.Controls;
 9 
10 namespace SelectDemo
11 {
12      partial class ElmSearch : Smobiler.Core.Controls.MobileForm
13      {
14          public ElmSearch() : base()
15          {
16              //This call is required by the SmobilerForm.
17              InitializeComponent();
18          }
19 
20         private DBClass dBClass = new DBClass();//DBClass 資料庫查詢類
21          private void panel2_Press(object sender, EventArgs e)
22          {
23              ShowElmLayout();
24          }
25          private void ShowElmLayout()
26          {
27              //篩選項資料
28              SelectData d1 = new SelectData()
29              {
30                  title = "歷史搜索",
31                  items = new String[] { "" },
32                  ishow = true
33              };
34              SelectData d2 = new SelectData()
35              {
36                  title = "歷史搜索",
37                  items = new String[] { "超級發布30減20起", "小恒水餃", "早餐", "油條", "炸雞" ,"包子","皮蛋瘦肉粥"},
38                  ishow = false
39              };
40 
41             List<SelectData> sds = new List<SelectData>();
42              sds.Add(d1);
43              sds.Add(d2);
44             
45              // 實體化ElmLayout
46              ElmLayout uc = new ElmLayout(sds, keyLab.Text);
47              DialogOptions footerDialogOptions;
48              footerDialogOptions = new DialogOptions(LayoutJustifyAlign.FlexStart, System.Drawing.Color.Transparent, Smobiler.Core.Controls.Padding.Empty, true);
49              //在表單中彈出ElmLayout
50              ShowDialog(uc, footerDialogOptions, (obj, args) =>
51              {
52                  if (uc.ShowResult == ShowResult.Yes)
53                  {
54                      keyLab.Text = uc.currentkey;
55                      DataTable dt = dBClass.DbConnectAndQuert(uc.querystr);
56                      listView1.Rows.Clear();
57                      listView1.DataSource = dt;
58                      listView1.DataBind();
59                  }
60              });
61 
62         }
63          private void imageButton1_Press(object sender, EventArgs e)
64          {
65              this.Close();
66          }
67      }
68 }
ElmSearch

ElmLayout.cs

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using Smobiler.Core;
  6 using Smobiler.Core.Controls;
  7 
  8 namespace SelectDemo.Layouts
  9 {
 10     ////ToolboxItem用于控制是否添加自定義控制元件到工具箱,true添加,false不添加
 11     //[System.ComponentModel.ToolboxItem(true)]
 12     partial class ElmLayout : Smobiler.Core.Controls.MobileUserControl
 13     {
 14         public ElmLayout() : base()
 15         {
 16             //This call is required by the SmobilerUserControl.
 17             InitializeComponent();
 18         }
 19         public ElmLayout(List<SelectData> selectDatas, string defalutStr) : base()
 20         {
 21             //This call is required by the SmobilerUserControl.
 22             InitializeComponent();
 23             GethHistory(selectDatas, defalutStr);
 24         }
 25         public string currentkey;
 26         public string querystr;
 27 
 28         private void CloseDialog_Press(object sender, EventArgs e)
 29         {
 30             this.ShowResult = ShowResult.No;
 31             this.Close();
 32 
 33         }
 34         private void GethHistory(List<SelectData> selectDatas, string defaultstr)
 35         {
 36             this.KeyLab.Text = defaultstr;
 37             foreach (SelectData data in selectDatas)
 38             {
 39                 //該label用于顯示“歷史搜索”文字
 40                 Label label1 = new Label()
 41                 {
 42                     Text = data.title,
 43                     Flex = 1,
 44                     FontSize = 15,
 45                     Size = new System.Drawing.Size(0, 25),
 46                     Bold=true,
 47                     ForeColor=System.Drawing.Color.Gray
 48                 };
 49 
 50                 Panel p1 = new Panel()
 51                 {
 52                     Layout = LayoutPosition.Relative,
 53                     Direction = LayoutDirection.Row,
 54                     Size = new System.Drawing.Size(0, 0),
 55                     Padding = new Padding(12, 0, 12, 0)
 56                 };
 57 
 58                 p1.Controls.Add(label1);
 59 
 60                 Panel p2 = new Panel()
 61                 {
 62                     Layout = LayoutPosition.Relative,
 63                     Direction = LayoutDirection.Row,
 64                     Size = new System.Drawing.Size(0, 0),
 65                     Padding = new Padding(12, 0, 12, 0),
 66                     Wrap = LayoutWrap.Wrap
 67                 };
 68                 if (data.ishow == true)
 69                 {   
 70                     //添加“歷史搜索”后的洗掉按鈕
 71                     ImageButton imgbtn = new ImageButton()
 72                     {
 73                         ImageType = ImageEx.ImageStyle.FontIcon,
 74                         ResourceID = "trash-o",
 75                         IconColor = System.Drawing.Color.Silver,
 76                         Size = new System.Drawing.Size(25, 25)
 77                     };
 78                     imgbtn.Press += this.DeleteButtonPress;
 79                     p1.Controls.Add(imgbtn);
 80 
 81                     for (int i = 0; i < data.items.Length; i++)
 82                     {
 83                         Button btn = new Button()
 84                         {
 85                             Text = data.items[i],
 86                             BackColor = System.Drawing.Color.WhiteSmoke,
 87                             ForeColor = System.Drawing.Color.Gray,
 88                             Size = new System.Drawing.Size(0, 0),
 89                             Padding = new Padding(12,8,12,8),
 90                             BorderRadius = 4,
 91                             Margin = new Margin(0, 4, 12, 4)
 92                         };
 93                         btn.Press += this.SelectButtonPress;
 94                         p2.Controls.Add(btn);
 95                     }
 96                     hisPanel.Controls.Add(p1);
 97                     hisPanel.Controls.Add(p2);
 98                 }
 99                 else
100                 {
101                     //原型上“超級發布30減20起 按鈕”
102                     Button spbtn = new Button()
103                     {
104                         Text = data.items[0],
105                         BackColor = System.Drawing.Color.AliceBlue,
106                         ForeColor = System.Drawing.Color.DeepSkyBlue,
107                         Size = new System.Drawing.Size(0, 0),
108                         Padding = new Padding(12,8,12,8),
109                         BorderRadius = 4,
110                         Margin = new Margin(0,4, 12, 4)
111                     };
112                     spbtn.Press += this.SelectButtonPress;
113                     p2.Controls.Add(spbtn);
114 
115                     for (int i = 1; i < data.items.Length; i++)
116                     {
117                         Button btn = new Button()
118                         {
119                             Text = data.items[i],
120                             BackColor = System.Drawing.Color.WhiteSmoke,
121                             ForeColor = System.Drawing.Color.Gray,
122                             Size = new System.Drawing.Size(0, 0),
123                             Padding = new Padding(12,8,12,8),
124                             BorderRadius = 4,
125                             Margin = new Margin(0, 4, 12, 4)
126                         };
127                         btn.Press += this.SelectButtonPress;
128                         p2.Controls.Add(btn);
129                     }
130                     disPanel.Controls.Add(p1);
131                     disPanel.Controls.Add(p2);
132                 }
133 
134             }
135         }
136 
137         /// <summary>
138         /// 清空歷史搜索記錄
139         /// </summary>
140         /// <param name="sender"></param>
141         /// <param name="e"></param>
142         private void DeleteButtonPress(object sender, EventArgs e)
143         {
144             hisPanel.Controls.Clear();
145         }
146         /// <summary>
147         /// 搜索內容查詢
148         /// </summary>
149         /// <param name="sender"></param>
150         /// <param name="e"></param>
151         private void SelectButtonPress(object sender, EventArgs e)
152         {
153             Button btn = (Button)sender;
154             this.ShowResult = ShowResult.Yes;
155             currentkey = btn.Text;
156             //將查詢關鍵字替換進去
157             querystr = @"SELECT * FROM `testdata` where data like '%"+currentkey+"%'";
158             this.Close();
159         }
160         /// <summary>
161         /// 搜索框回車鍵事件
162         /// </summary>
163         /// <param name="sender"></param>
164         /// <param name="e"></param>
165         private void KeyLab_SubmitEditing(object sender, EventArgs e)
166         {
167             this.ShowResult = ShowResult.Yes;
168             currentkey = KeyLab.Text;
169             //將查詢關鍵字替換進去
170             querystr = @"SELECT * FROM `testdata` where data like '%" + KeyLab.Text+ "%'";
171             this.Close();
172         }
173 
174         private void imageButton1_Press(object sender, EventArgs e)
175         {
176             this.ShowResult = ShowResult.No;
177             this.Close();
178         }
179     }
180 }
ElmLayout

SelectData.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace SelectDemo
 8 {
 9     class SelectData
10     {
11         public String title { set; get; }
12         public String[] items { set; get;}
13         public Boolean  ishow { set; get; }
14         public Boolean isradio { set; get; }
15         public String type { set; get; }
16 
17     }
18 }
SelectData

DBClass.cs

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Data;
 4 using System.Data.SqlClient;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8 using MySql.Data.MySqlClient;
 9 namespace SelectDemo
10 {
11     class DBClass
12     {
13         /// <summary>
14         /// 連接資料庫并查詢相應資料
15         /// </summary>
16         /// <param name="query">資料庫查詢陳述句</param>
17         /// <returns></returns>
18         public DataTable DbConnectAndQuert(string query)
19         {
20            
21             String connetStr = "server=127.0.0.1;port=3306;user=****;password=****; database=***;charset=utf8";
22             MySqlConnection conn = new MySqlConnection(connetStr);
23             try
24             {   
25                 DataTable dt = new DataTable();
26                 conn.Open();
27                 MySqlCommand com = new MySqlCommand(query, conn);
28                 MySqlDataAdapter adapter = new MySqlDataAdapter(com);
29                 adapter.Fill(dt);
30                 return dt;
31                
32             }
33             catch (MySqlException ex)
34             {
35                 Console.WriteLine(ex.Message);
36                 return null;
37             }
38             finally
39             {
40                 conn.Close();
41             }
42         }
43     }
44 }
DBClass

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/270398.html

標籤:ASP.NET

上一篇:如何在 ASP.Net Core 中使用 MiniProfiler

下一篇:jenkins - Asp.net 環境搭建(Windows)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more