基于AJAX.NET技术的DataGrid控件开发

简介:
摘要  本文中的这个 DataGrid 是一个客户端控件,它是使用JavaScript和 Ajax .net技术构建的。

   一、 简介

  本文中要创建的这个 DataGrid 是一个客户端控件。它是使用JavaScript并且使用Ajax.net技术构建的以实现与 ASP.NET 后端代码的通讯;而在这个后端,我们使用ADO.NET存取数据库并使用Dataset更新数据库。

  这个控件具有一个 DataGrid 应该具有的一切特征,并且具有在你建立连接串和表名后不需要编写任何代码就能够自动工作的所有功能。

  这个Datagrid支持如下功能:

  1. 页面。

  2. 排序。

  3. Master-Detail(Detail部分还支持页面和排序)。

  4. 基于给定的列条件可以定制行颜色。 

  5. 编辑。

  6. 当没有页面支持时,没有头部滚动的滚动条支持。

  7. 支持控件(图像,文本框,超级链接,下拉列表框,复选框)。

  8. 自动分割头部名称。

  9. 针对十进制、电子邮件和数字的自动校验文本框。

  通过右击屏幕打开一个弹出窗口(参考图1),可以实现这个DataGrid在不同的模式之间的切换(图2展示一种模式下的视图):


点击放大此图片
图2.这个DataGrid具有分页,Master-Detail和编辑功能。
点击放大此图片
图3.这个DataGrid具有定制控件和含有静态头部的滚动条

   二、 性能剖析

  这个 DataGrid 是应邀使用javascript创建的,而JavaScript并不是一种编译语言,因此,与把xtml代码直接生成到页面的技术相比,这种方式速度显然慢些。如果DataGrid包含多于200记录,那么最好还是使用页面方式。否则,性能将会受到很大影响。

  我们使用CSS(层叠式样表)来配置这个控件的外观;因此,用户可以很容易地进行修改。
三、 用法

  这个用户控件包括五个部分:

  1. 用户控件.ascx文件

  2. JavaScript文件

  3. 数据库存取文件 
  
  4. CSS文件 

  5. AJAX.NET动态链接库(.dll)

  首先,要添加对ajax.dll的参考。

  然后,把UserControl目录直接复制到你的工程并且把这个用户控件添加到你的ASP.Net页面(请参考工程源码):
<%@ Register TagPrefix="WebDataGridDemo" TagName="WebDataGrid" Src= "UserControl/WebDataGridUserControl.ascx"%> 
<WEBDATAGRIDDEMO:WEBDATAGRID id="wdg1" runat="server"> </WEBDATAGRIDDEMO:WEBDATAGRID> 

  在这个Web.config文件中,安装连接字符串。接下来,添加对Ajax.net dll的参考:

<appSettings>
<add key="ConnectionString" value="Data Source=(local);Initial Catalog=Northwind;User Id=sa;Password=xxx;" />
</appSettings>
<httpHandlers>
<add verb="POST,GET" path="
type="Ajax.PageHandlerFactory, Ajax " />
</httpHandlers>

  在这个DynamicDataGrid.js文件中,大多数参数具有默认值,你可以通过使用该控件的Web表单来修改这些参数。

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)

WebDataGridUserControl.MainTableName="suppliers";
WebDataGridUserControl.DetailTableName = "products";
//这些可选的值将会覆盖默认的属性
WebDataGridUserControl.Height =300;
WebDataGridUserControl.Width = 780;
WebDataGridUserControl.Editable = 1;
WebDataGridUserControl.PageSize = 4;
}
}

   四、 配置

  另外,你还可以修改WebDataGridUserControl.ascx.cs文件中的一些参数。

  如果你不使用页面模式,那么你可能需要改变数组ResetIfNoEditable和columnWidth以调整该格子的头部的列尺寸和行尺寸。

[Ajax.AjaxMethod]
public ArrayList InitializeInfo()
{
...
// int pageable=1; masterDetail =1;editable = 1;pageSize=10; height=300
string [] FunctionProperty = {"1", "1", gEdit, gPageSize, gridHeight, gridWidth};
//={}-没有可用控件,0-标签,1-图像,2-超级链接,3-文本框,4-复选框,5-下拉列表框
string [] ColumnControlType = {"0","2","3","3","0","3","4"}; 
//显示哪些列(3,4,5,7)是可编辑的
string [] ColumnEditable = {"0","0","1","1","1","0","1"};

//下列属性仅仅用于非页面支持情况下
//下列一句用于把第3,4,5列编辑按钮的尺寸重新设置为10,10,10
string [] ResetIfNoEditable = {"0","0","10","10","10", "0"};

string [] CustomizedHeadZize={"68","140","120","120","120", "0"};
//当没有页面支持设置时,需要列宽度;你应该把一列设置为"0"
string [] columnWidth ={"68","140","120","120","120","0"};
...
return al;
}
[Ajax.AjaxMethod]
public ArrayList GetHeadArray()
{
...
//这个数组应该匹配编辑字段-column3=Decimal,column4=Email,column5=Number
string [] ValidateType = {"","","Decimal","Email","Number"};
//赋值ColumnDisplayName = {};如果不使用定制显示名
string [] ColumnDisplayName = {};
...
}

  最后,十分感谢Michael Schwarz,是他创建了搭建起JavaScript与.Net之间桥梁的ajax.net。


















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/59746,如需转载请自行联系原作者



相关文章
|
14天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
10天前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
22 3
|
10天前
|
开发框架 安全 Java
.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力
本文深入探讨了.NET技术的独特魅力与优势,涵盖高效的开发体验、强大的性能表现、高度的可扩展性及丰富的生态系统等方面,展示了其在软件开发领域的核心竞争力。.NET不仅支持跨平台开发,具备出色的安全性和稳定性,还能与多种技术无缝集成,为企业级应用提供全面支持。
21 3
|
14天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
14天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
13天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
14天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
前端开发 .NET 开发框架
.net Ajax系列(1)调用Web Service
如何调用ws  1) .net Ajax scriptManager属性设置             2)ws内容  public class selfWS : System.
610 0
|
前端开发 .NET 开发框架
.net Ajax系列(1)调用Web Service
如何调用ws  1) .net Ajax scriptManager属性设置             2)ws内容  public class selfWS : System.
596 0
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
87 0