【新特性速遞】向表格追加數據(AppendData)!


FineUIPro/Mvc/Core/JS的下個版本(v6.3.0),我們為表格增加AppendData方法,可以方便的向表格追加數據。

 

下面通過一個新增的示例(表格控件/分頁/加載更多)來了解這個方法,頁面顯示效果如下圖所示:

 

頁面標簽將表格(Grid)和【加載更多...】按鈕通過一個面板(Panel)組合起來:

<f:Panel IsFluid="true" Title="面板" CssClass="blockpanel" runat="server" Height="350px" AutoScroll="true">
	<Items>
		<f:Grid ID="Grid1" EnableCollapse="false" ShowBorder="false" ShowHeader="false"
			runat="server" EnableCheckBoxSelect="true" DataKeyNames="Id,Name" AttributeDataTag="0">
			<Columns>
				<f:RowNumberField />
				。。。
			</Columns>
		</f:Grid>
		<f:LinkButton runat="server" CssClass="morebutton" Text="加載更多..." ID="btnMore" OnClick="btnMore_Click"></f:LinkButton>
	</Items>
</f:Panel>

 

【加載更多...】按鈕的點擊事件: 

protected void btnMore_Click(object sender, EventArgs e)
{
	var pageIndex = Convert.ToInt32(Grid1.AttributeDataTag);
	pageIndex++;

	var pageCount = GetPageCount();
	if (pageIndex <= pageCount - 1)
	{
		// 追加數據
		Grid1.AppendData(GetPagedDataTable(pageIndex, PAGESIZE));

		Grid1.AttributeDataTag = pageIndex.ToString();
	}

	if (pageIndex == pageCount - 1)
	{
		btnMore.Enabled = false;
		btnMore.Text = "全部加載完畢";
	}
}

 

注意其中的 AppendData 方法,傳入的參數是要附加的表格數據。這個示例中我們使用了分頁數據,當然你可以自定義數據分隔方式,而不僅僅局限於分頁的方式返回數據。

 

上面是 FineUIPro 的實現,下面我們看下 FineUICore 中的實現,代碼是非常相似的。

FineUICore 中的頁面標簽:

<f:Panel IsFluid="true" Title="面板" CssClass="blockpanel" Height="350" AutoScroll="true">
	<Items>
		<f:Grid ID="Grid1" ShowBorder="false" ShowHeader="false" Title="表格" DataIDField="Id" DataTextField="Name" EnableCheckBoxSelect="true"
				DataSource="@ViewBag.Grid1DataSource">
			<Columns>
				<f:RowNumberField />
				。。。
			</Columns>
			<Attributes>
				<f:Attribute Key="data-index" Value="0"></f:Attribute>
			</Attributes>
		</f:Grid>
		<f:LinkButton CssClass="morebutton" Text="加載更多..." ID="btnMore" 
			OnClick="@Url.Handler("btnMore_Click")" 
			OnClickFields="Grid1" 
			OnClickParameter1="@(new Parameter("dataIndex", "F.ui.Grid1.getAttr('data-index')"))"></f:LinkButton>
	</Items>
</f:Panel>

按鈕的點擊事件處理函數:

public IActionResult OnPostBtnMore_Click(string[] Grid1_fields, int dataIndex)
{
	var grid1 = UIHelper.Grid("Grid1");
	var btnMore = UIHelper.LinkButton("btnMore");

	dataIndex++;

	var pageCount = DataSourceUtil.GetPageCount(PAGESIZE);
	if (dataIndex <= pageCount - 1)
	{
		var dataSource = DataSourceUtil.GetPagedDataTable(pageIndex: dataIndex, pageSize: PAGESIZE);
		grid1.AppendData(dataSource, Grid1_fields); // 追加數據

		grid1.Attribute("data-index", dataIndex.ToString());
	}

	if (dataIndex == pageCount - 1)
	{
		btnMore.Enabled(false);
		btnMore.Text("全部加載完畢");
	}
	return UIHelper.Result();
}

  

=======================

上面的例子有個瑕疵,那就是加載更多數據時,表格的標題欄不見了。

 

為此,我們還會新增另外一個示例,使用簡單的自定義JS和CSS代碼,讓表格的標題欄始終可見,來看下顯示效果:

 

=======================

除此之外,DataList也支持類似的 AppendData 方法,如下圖所示:

 

  

注:FineUICore v6.3.0 計划在 2020年5月中旬 發布,敬請期待!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM