需求:
生产通知单需要展现销售订单的物料
方案:
由于是含有多个物料,为了更好地呈现,可增加拓展列,可折叠和展开。增加一键展开物料,方便对比多项物料信息。对于不需要看到物料信息的人员,可以隐藏拓展列,隐藏展开按钮,默认折叠。
1、操作类,增加新属性物料,拼接源单所含的物料名称,并存入类集合中
foreach (Production ss in dataList)
{
ss.matInfo = GetmatName(ss.orderID);
}
private string GetmatName(long OrderID)
{
string retVal = "";
List<string> strLst = DB.Select<Entity.Se_saleOrderSub>()
.Where(x => x.PID == OrderID).ToList(a => (a.PdCNname));
if (strLst != null && strLst.Count > 0)
{
foreach (string item in strLst)
{
retVal += item + ",";
}
}
if (retVal.Length > 0) retVal = retVal.Substring(0, retVal.Length - 1);
return retVal;
}
2、增加拓展列到指定列表中
前端:
<f:TemplateField ColumnID="expander" RenderAsRowExpander="true">
<ItemTemplate>
<div class="expander">
<p>
<strong>物料:</strong><%# Eval("matInfo") %>
</p>
</div>
</ItemTemplate>
</f:TemplateField>
Eval:把一段字符串传递给JS解释器,由Javascript解释器将这段字符串解释成Javascript代码
3、增加一键展开、折叠扩展列按钮
<f:Button ID="btnCollapse" Text="全部折叠" runat="server" OnClick="btnCollapseRowExpanders_Click" Icon="SectionExpanded" />
<f:Button ID="btnExpand" Text="全部展开" runat="server" OnClick="btnExpandRowExpanders_Click" Icon="SectionCollapsed" />
protected void btnExpandRowExpanders_Click(object sender, EventArgs e)
{
Grid1.ExpandRowExpanders();
}
protected void btnCollapseRowExpanders_Click(object sender, EventArgs e)
{
Grid1.CollapseRowExpanders();
}
4、隐藏拓展列
protected void Button3_Click(object sender, EventArgs e)
{
GridColumn genderColumn = Grid1.FindColumn("expander");
genderColumn.Hidden = !genderColumn.Hidden;
}
结论:
扩展列能保证充足的空间展示详细的信息,但是如果扩展列中的数据量较小,全部展开冗余空间大。