利用ajax无刷新显示系统进程(B/S)!~
<%@ Page language="C#" MasterPageFile="~/MasterPage.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<ajax:ajaxpanel ID="Ajaxpanel1" runat="server">
<fieldset>
<legend>Windows Processes (list is updated every 10 seconds using Callback Timer)</legend>
<i>This example demonstrates the use of the MagicAjax CallbackTimer. <br />For this example we've set the Callback timer in the Page_Load event (hint: click 'View Source' at the bottom of this page to see the complete source of this aspx file).</i><br /><br />
<div style="overflow:auto;height:400px;width:325px">
<asp:DataGrid AutoGenerateColumns="false" AllowSorting="True" OnSortCommand="grid_SortCommand" runat="server" ID="DataGrid1" BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="5" GridLines="Horizontal" >
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" Mode="NumericPages" />
<AlternatingItemStyle BackColor="#F7F7F7" />
<ItemStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<Columns>
<asp:BoundColumn DataField="ProcessName" SortExpression="ProcessName" HeaderText="Image Name" />
<asp:BoundColumn DataField="PhysicalMemory" SortExpression="PhysicalMemory" HeaderText="Mem Usage" DataFormatString="{0:###,###,###} K" />
<asp:BoundColumn DataField="HandleCount" SortExpression="HandleCount" HeaderText="Handles" DataFormatString="{0:###,###}" />
</Columns>
</asp:DataGrid>
</div>
</fieldset>
</ajax:ajaxpanel>
</asp:Content>
<script language="C#" runat="server">
private void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// For automatic CallBack every 10 seconds.
MagicAjax.AjaxCallHelper.SetAjaxCallTimerInterval(10000);
}
ShowProcesses();
}
private void ShowProcesses()
{
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();
System.Data.DataTable dt = new System.Data.DataTable("Processes");
dt.Columns.Add("ProcessName");
dt.Columns.Add("PhysicalMemory", typeof(Int64));
dt.Columns.Add("HandleCount", typeof(Int32));
foreach (System.Diagnostics.Process process in processes)
{
dt.Rows.Add(new object[] {process.ProcessName, process.WorkingSet64 /1000, process.HandleCount });
}
System.Data.DataView dv = dt.DefaultView;
//sort data
dv.Sort = SortExpression;
//bind data
DataGrid1.DataSource = dv;
DataGrid1.DataBind();
}
/// <summary>
/// SortExpression of the grid (stored in ViewState!)
/// </summary>
private string SortExpression
{
get
{
if (ViewState["_grid_SortExpression"] != null)
{
return (string)ViewState["_grid_SortExpression"];
}
else
{
return "PhysicalMemory desc"; //default
}
}
set
{
ViewState["_grid_SortExpression"] = value;
}
}
private void grid_SortCommand(object source, DataGridSortCommandEventArgs e)
{
string[] currentSort = SortExpression.Split(' ');
if (currentSort[0] == e.SortExpression)
{
SortExpression = string.Format("{0} {1}", e.SortExpression, currentSort[1] == "desc" ? "asc" : "desc");
}
else
{
SortExpression = e.SortExpression + " asc";
}
//refill datagrid
ShowProcesses();
}
</script>
Lad.li
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?