1、项目环境设置

2、大屏数据调优
This commit is contained in:
2025-04-17 18:32:33 +08:00
parent ee8b8926a2
commit 255a37051e
15 changed files with 1077 additions and 59 deletions
@@ -0,0 +1,87 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Schedule.aspx.cs" Inherits="FineUIPro.Web.SysManage.Schedule" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="智慧进度" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ScheduleId" EnableColumnLines="true"
ClicksToEdit="2" DataIDField="ScheduleId" AllowSorting="true" ForceFit="true"
AllowPaging="true" IsDatabasePaging="true"
Width="980px" EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server">
<Items>
<f:Button ID="btnNew" runat="server" ToolTip="新增" Icon="Add" Text="新增" OnClick="btnMenuAdd_Click"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
<f:Label runat="server" Text="进度每个项目最多添加6条数据,日期必须填写。" CssStyle="color:red"></f:Label>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="55px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="200px" ColumnID="ScheduleName" DataField="ScheduleName" FieldType="String" HeaderText="进度名称"
HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:BoundField Width="100px" DataField="ScheduleDate" DataFormatString="{0:yyyy-MM-dd}" HeaderText="日期" />
<f:RenderField Width="200px" ColumnID="ProjectName" DataField="ProjectName" FieldType="String" HeaderText="归属项目"
HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</Listeners>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" Title="新增" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" IsModal="true" Width="600px" Height="400px" OnClose="Window1_Close">
</f:Window>
<f:Menu ID="Menu1" runat="server">
<f:MenuButton ID="btnMenuEdit" OnClick="btnMenuEdit_Click" Icon="TableEdit" EnablePostBack="true"
Hidden="true" runat="server" Text="编辑">
</f:MenuButton>
</f:Menu>
</form>
<script type="text/jscript">
var menuID = '<%= Menu1.ClientID %>';
// 返回false,来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
F(menuID).show(); //showAt(event.pageX, event.pageY);
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>
@@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using BLL;
namespace FineUIPro.Web.SysManage
{
public partial class Schedule : PageBase
{
public string Projectid
{
get
{
return (string)ViewState["Projectid"];
}
set
{
ViewState["Projectid"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Projectid = CurrUser.LoginProjectId;
////权限按钮方法
this.GetButtonPower();
// 绑定表格
this.BindGrid();
}
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (Request.Params["value"] == "0")
{
return;
}
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.SysSetScheduleMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnMenuEdit.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
//查询user表里岗位项目角色是群安员的用户
string strSql = @"select ScheduleId,ScheduleName,ScheduleDate,S.ProjectId,J.ProjectName,SortId from Sys_Schedule S
left join Base_Project J on S.ProjectId= J.ProjectId
WHERE 1=1 ";
List<SqlParameter> listStr = new List<SqlParameter>();
strSql += " AND S.ProjectId=@ProjectId ";
listStr.Add(new SqlParameter("@ProjectId", CurrUser.LoginProjectId));
strSql += " order by SortId ";
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
//tb = GetFilteredTable(Grid1.FilteredData, tb);
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#endregion
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Projectid))
{
string id = Grid1.SelectedRowID;
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ScheduleEdit.aspx?ScheduleId={0}", id, "编辑 - ")));
}
else
{
Alert.ShowInTop("未获取到当前项目,请刷新页面或重新选择项目", MessageBoxIcon.Warning);
}
}
protected void btnMenuAdd_Click(object sender, EventArgs e)
{
//判断是否已经存在6个
if (!string.IsNullOrEmpty(Projectid))
{
var listSchedule = Funs.DB.Sys_Schedule.Where(x => x.ProjectId == Projectid).ToList();
if (listSchedule.Count >= 6)
{
Alert.ShowInTop("进度节点数据最多添加6条!", MessageBoxIcon.Warning);
}
else
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ScheduleEdit.aspx", "添加 - ")));
}
}
else
{
Alert.ShowInTop("未获取到当前项目,请刷新页面或重新选择项目", MessageBoxIcon.Warning);
}
}
}
}
+107
View File
@@ -0,0 +1,107 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.SysManage
{
public partial class Schedule
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// btnNew 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Menu1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
}
}
@@ -0,0 +1,76 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ScheduleEdit.aspx.cs" Inherits="FineUIPro.Web.SysManage.ScheduleEdit" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.labcenter {
text-align: center;
}
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
.f-grid-row.red {
background-color: #FF7575;
background-image: none;
}
.fontred {
color: #FF7575;
background-image: none;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow>
<Items>
<f:TextBox ID="txtScheduleName" runat="server" Label="节点名称" ShowRedStar="true" Required="true" LabelAlign="Right"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DatePicker ID="txtScheduleDate" runat="server" Label="节点日期" DateFormatString="yyyy-MM-dd" ShowRedStar="true" Required="true" LabelAlign="Right"
EnableEdit="true">
</f:DatePicker>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtSortId" runat="server" Label="序号" Readonly="true" LabelAlign="Right"></f:TextBox>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:TextBox ID="hdCheckControlCode" runat="server" Hidden="true"></f:TextBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="btnSave" OnClick="btnSave_Click" Icon="SystemSave" runat="server" ValidateForms="SimpleForm1" ToolTip="保存" Text="保存">
</f:Button>
<f:TextBox ID="hdId" runat="server" Hidden="true">
</f:TextBox>
<f:TextBox ID="hdAttachUrl" runat="server" Hidden="true">
</f:TextBox>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,102 @@
using BLL;
using System;
using System.Data;
using System.Linq;
namespace FineUIPro.Web.SysManage
{
public partial class ScheduleEdit : PageBase
{
/// <summary>
/// 主键
/// </summary>
public string ScheduleId
{
get
{
return (string)ViewState["ScheduleId"];
}
set
{
ViewState["ScheduleId"] = value;
}
}
public string Projectid
{
get
{
return (string)ViewState["Projectid"];
}
set
{
ViewState["Projectid"] = value;
}
}
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ScheduleId = Request.Params["ScheduleId"];
Projectid = CurrUser.LoginProjectId;
if (!string.IsNullOrEmpty(ScheduleId))
{
if (!string.IsNullOrEmpty(Projectid))
{
Model.Sys_Schedule model = Funs.DB.Sys_Schedule.FirstOrDefault(x => x.ScheduleId == ScheduleId && x.ProjectId == Projectid);
txtScheduleName.Text = model.ScheduleName;
txtScheduleDate.Text = model.ScheduleDate.ToString();
txtSortId.Text = model.SortId.ToString();
}
}
else
{
Model.Sys_Schedule model = Funs.DB.Sys_Schedule.OrderByDescending(x => x.SortId).FirstOrDefault(x => x.ProjectId == Projectid);
if (model != null)
{
txtSortId.Text = (model.SortId + 1).ToString();
}
else
{
txtSortId.Text = "1";
}
}
}
}
/// <summary>
/// 保存事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
Model.Sys_Schedule model = new Model.Sys_Schedule();
model.ScheduleDate = Convert.ToDateTime(txtScheduleDate.Text);
model.ScheduleName = txtScheduleName.Text.Trim();
model.SortId = Convert.ToInt32(txtSortId.Text);
model.ProjectId = Projectid;
if (!string.IsNullOrEmpty(ScheduleId))
{
model.ScheduleId = ScheduleId;
ScheduleService.Update(model);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
model.ScheduleId = SQLHelper.GetNewID(typeof(Model.Sys_Schedule)); ;
ScheduleService.Add(model);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
}
}
}
@@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.SysManage
{
public partial class ScheduleEdit
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtScheduleName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtScheduleName;
/// <summary>
/// txtScheduleDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtScheduleDate;
/// <summary>
/// txtSortId 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtSortId;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// hdCheckControlCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox hdCheckControlCode;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// hdId 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox hdId;
/// <summary>
/// hdAttachUrl 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox hdAttachUrl;
}
}