B4X编程语言:B4XTable的功能栏及功能按钮

        B4XTable是基于分页的表格工具,它内置了丰富的功能栏及功能按钮,有页面导航栏、行状态信息栏、列排序按钮及搜索框,可以很方便地操作B4XTable页面查询、显示当前记录状态信息。

        一、页面导航栏

        页面导航栏包含四个导航按钮和一个页面状态信息文本标签,分别是:
        lblFirst 首页按钮,可用时点击将显示首页数据,控件类型为B4XView。
        lblBack 上页按钮,可用时点击将显示上页数据,控件类型为B4XView。
        lblNext 下页按钮,可用时点击将显示下页数据,控件类型为B4XView。
        lblLast 尾页按钮,可用时点击将显示尾页数据,控件类型为B4XView。
        lblNumber 页面信息标签,默认显示当前页码,控件类型为B4XView。
        我们可以在B4XTable1_DataUpdated事件中设置自定义显示信息。如可以显示为:当前页码/总页数。

        这五个控件共用一个父容器Parent,四个导航按钮默认字体是MaterialIcons,默认字体大小36。lblNumber的默认字体是系统默认字体,默认字体大小20。我们可以更改页面导航栏字体和按钮文本,实现自定义导航栏。
        例如:

Dim font1 As B4XFont=B4XTable1.lblNumber.Font
B4XTable1.lblFirst.Text="首页"
B4XTable1.lblBack.Text="上页"
B4XTable1.lblNext.Text="下页"
B4XTable1.lblLast.Text="尾页"
Dim p As B4XView=B4XTable1.lblBack.Parent
For Each v As B4XView In p.GetAllViewsRecursive
	v.Font=font1
	v.TextSize=12
Next

        在B4XTable1_DataUpdated事件中添加如下语句:
        Dim TotalPage As Int=Ceil(B4XTable1.Size/B4XTable1.RowsPerPage)
        B4XTable1.lblNumber.Text=$"${B4XTable1.CurrentPage} / ${TotalPage}"$

        二、行状态信息栏

        lblFromTo是行状态信息栏控件,类型为B4XView。显示当前页是从第n1行到n2行及总行数,默认显示:n1 to n2 out of total,这种情况下:
        B4XTable1.StringTo="to"
        B4XTable1.StringOutOf="out of"
        当搜索不到符合条件的记录时默认行状态信息显示的文本:
        B4XTable1.StringNoMatches="No Matches"
        当搜索到符合条件的记录时,默认将由下面信息替换out of total:
        B4XTable1.StringMoreAvailable="more available"

        我们可以通过更改这两个属性来更改显示的行状态信息字符串。如:
        B4XTable1.StringTo="-"
        B4XTable1.StringOutOf="/总数"
        B4XTable1.StringNoMatches="没有匹配的字符串"
        行状态信息栏将显示为:n1 - n2 /总数 total。
        当搜索不到符合条件的记录时,行状态信息将显示:没有匹配的字符串。

        三、列排序按钮

        列排序按钮lblSort也是一个B4XView控件,默认情况下隐藏,当点击列标题时,显示在该列标题的右端。首次点击该列按升序排列,再次点击则按降序排列。
        隐藏列排序按钮:B4XTable1.lblSort.Visible=False
        禁用列排序按钮:Column.Sortable=False

        四、搜索框

        搜索框SearchField也是一个B4XView控件,在搜索框中输入搜索关键字,B4XTable将自动在各文本列搜索包含该关键字的记录,并自动过滤掉不包含该关键字的记录。
        我们可以设置SearchField的属性以更改搜索框的外观和布局:

B4XTable1.SearchField.TextField.TextSize=12
B4XTable1.SearchField.HintText="搜索关键字"
B4XTable1.SearchField.HintColor=xui.Color_LightGray
B4XTable1.SearchField.mBase.Width=100
B4XTable1.SearchField.mBase.Height=30
B4XTable1.SearchField.mBase.Top=5	
B4XTable1.StringNoMatches="没有匹配的字符串"
B4XTable1.SearchField.Update

        注意:必须使用B4XTable1.SearchField.Update,更改的属性才能生效。

        搜索后B4XTable显示的符合条件的记录只是临时数据集合,内部数据库data的记录并不会因搜索显示数据的变化而变化,B4XTable1.Size不会发生变化,页面总数也不会发生不变化。
        要使页面状态信息和行状态信息实时反映搜索结果,需要在B4XTable1_DataUpdated事件中添加相关查询语句:

Dim count As Int=B4XTable1.Size	
Dim tx As String=B4XTable1.SearchField.TextField.Text.Trim	
If tx.Length>0 Then 
	Dim sql2 As String=$"select count() from data where c1 like '%${tx}%' or c2 like '%${tx}%' or c4 like '%${tx}%'"$		
	Dim co As Int=B4XTable1.sql1.ExecQuerySingleResult(sql2)
	If co>0 Then
		count=co
	End If
End If
TotalPage=Ceil(count/B4XTable1.RowsPerPage)
B4XTable1.lblNumber.Text=$"${B4XTable1.CurrentPage} / ${TotalPage}"$	
B4XTable1.StringMoreAvailable=$"/总数${count}"$
B4XTable1.Refresh

        五、变更B4XTable功能栏的显示位置

        页面导航栏、行状态信息栏、搜索框默认情况下显示在B4XTable表格的上端,我们可以通过设置其Visisble属性定制其是否显示。
        如果要改变其显示位置,一般需要三个步骤:
        在拟显示位置添加一个容器;
        将将相关功能栏从父容器中移除;
        将相关功能栏添加到新添加的容器中。

        下面是将功能栏显示在B4XTable表格下面B4J代码:

B4XTable1.SearchVisible=True
Dim p As B4XView=B4XTable1.lblBack.Parent
p.SetColorAndBorder(xui.Color_White,1,xui.Color_Black,3)
p.RemoveViewFromParent
Pane1.AddNode(p,0,0,200,40)
B4XTable1.SearchField.mBase.RemoveViewFromParent
Pane1.AddNode(B4XTable1.SearchField.mBase,200,0,100,40)
B4XTable1.lblFromTo.RemoveViewFromParent
Pane1.AddNode(B4XTable1.lblFromTo,310,0,150,40)
B4XTable1.pnlHeader.Visible=False
B4XTable1.mBase.Top=0-B4XTable1.pnlHeader.Height

你可能感兴趣的:(#,B4X控件,前端,B4X语言,开发语言,笔记)