关于客户端用ASP参生报表

常见 Datagrid 错误

摘要:学习如何避免在使用 ASP.NET Datagrid 控件进行开发时可能发生的一些常见错误(本文包含一些指向英文站点的链接)。

Datagrid 控件是 Microsoft® ASP.NET 中功能最强、用途最广的 Web 控件之一,这一点已经得到了 ASP.NET 权威人士的认同。虽然 Datagrid 控件易于使用,但同样易于给使用者带来麻烦。以下是许多人所犯的一些错误,这些人包括从初学者到富有经验的 .NET 专家。您可以看到许多苦闷的使用者在 ASP.NET 新闻组和论坛就这些错误提出问题。遵循本文概述的相当简单的步骤,可以帮助您避免这些错误,并节约大量的开发时间。

可以使用 Datagrid 创建列表数据而没有使用

我知道您不会再使用如下所示的代码,但 ASP.NET 领域中许多守旧的用户仍在继续使用它们:

Response.Write("<table>")

While MyDataReader.Read()

Response.Write("<tr>")

Response.Write("<td>")

Response.Write(MyDataReader(0))

Response.Write("</td>")

Response.Write("</tr>")

Loop

Response.Write("</table>")

可以对以上代码进行简化,使其仅为:

<asp:datagrid runat="server" datasource="MyDataReader"/>,并调用 .DataBind() 方法。即使需要对 HTML 输出进行特殊的控制,您也可以在用户界面上记录集的内容重复出现的情况下,使用某个数据 Web 控件。

忘记在 Page_Load 事件中检查 IsPostBack

最常见的错误之一是忘记在数据绑定之前检查页面的 IsPostBack 条件。例如,Datagrid 处于“Edit”(编辑)模式时,忽略该项检查将导致已编辑的值被数据源中的原始值覆盖。然而,该规则至少有一个主要的例外,请参阅持续使用大型 ViewState。

以下是包含 IsPostBack 检查的一个典型 Page_Load 事件。BindGrid() 是一个例程,用于导入并设置 Datagrid 的数据源,并调用 DataBind() 方法。

Sub Page_Load

If Not IsPostBack Then

BindGrid()

End If

End Sub

需要更大的灵活性时,仍坚持使用自动生成的列

如果 Datagrid 所处的环境需要任何一种特殊格式,或是需要使用 Datagrid 中的其他任何 Web 控件,那么必须关闭 AutoGenerateColumns。将 AutoGenerateColumns 属性的设置保持为“True”(默认设置)的做法,仅在最简单的 Datagrid 方案中有效。但对几乎所有实际的应用程序,必须将该属性设置为“False”,并在 Datagrid 声明的 <columns></columns> 段中明确地指定列。Microsoft Visual Studio&reg;
.NET 用户可以使用属性生成器以图形化的方式创建这些列。

注意:如果将 AutoGenerateColumns 的设置保持为“True”,并且在 Datagrid 的 <columns> 段中指定了列,那么最终将得到对列的重复设置。系统将首先显示特别声明的列,随后是所有自动生成的列。

尝试仅使用控件 ID 来引用 Datagrid 项目中的控件

许多人没有认识到,对于 Datagrid 的 TemplateColumn 下的 ItemTemplate 中的控件(例如带有“MyTextBox”ID 的 TextBox 控件),不能在后面的代码或是在 ASPX 页面的 <script> 段中用如下所示的代码来直接调用该控件:

Dim MyValue As String = MyTextBox.Text

该代码将导致可怕的“名称‘MyTextBox’没有声明”错误。

因为 Datagrid 是由多个行(项目)组成的,所以数据源中的每一行实际都会有一个单独的“MyTextBox”实例。ASP.NET 在每个控件的 ID 前面加上该控件层次结构中每个命名容器的 ID,这样 Textbox 将具有唯一的 ID,与页面中所有其他控件的 ID 都不相同。例如,如果 MyTextBox 处于 DataGrid1 中,那么生成的 ID 将是 DataGrid1:_ctl2:MyTextBox。“_ctl2”代表
MyTextBox 所处的当前行。页面中其他 MyTextBox 实例的 ID 可能是 DataGrid1:_ctl3:MyTextBox、DataGrid1:_ctl4:MyTextBox 等等。要检索需要查找的“MyTextBox”值,需要对适当的 DataGridItem 调用 FindControl 方法。该 DataGridItem 用作 TextBox 的父命名容器。

HTML:

<asp:Datagrid runat="server" id="Datagrid1">

<Columns>

<asp:TemplateColumn>

<ItemTemplate>

<asp:TextBox runat="server" id="MyTextBox"/>

</ItemTemplate>

</asp:TemplateColumn>

</Columns>

代码:

Sub DataGrid1_UpdateCommand(sender As Object, _

e As DataGridCommandEventArgs)

Dim MyValue As String = _

CType(e.Item.FindControl("MyTextBox"), TextBox).Text

‘对 MyValue 执行操作

End Sub

关于客户端用ASP参生报表

时间: 2024-10-28 06:05:22

关于客户端用ASP参生报表的相关文章

js 判断客户端 和 asp.net/C#判断客户端类型

1.js 判断客户端 <script language="JavaScript"> <!-- onload = function browserRedirect() { //平台.设备和操作系统 var system = { win: false, mac: false, xll: false, iphone: false }; //检测平台 var p = navigator.platform; system.iphone = p.indexOf("iPh

asp.net RDLC报表入门

Asp.net RDLC 报表入门 这几天帮给同事讲解Asp.net RDLC 报表方面的知识,顺便做个简单教程,在这里分享给大家. 由于图片多又大,写了一半,光上传图片就把我累个半死,所以我教把程放在了自己搭建的github pages博客中. 再这里我只摘出一部分做个简单介绍,如果对您有帮助, 请移步至我的博客:Asp.net RDLC 报表入门 10 .数据分组 效果 11.添加参数 有时候我们要在图表中根据参数显示内容,做个例子, 1)添加参数    2)绑定参数, 右击Y轴 Axis

RDLC系列(一)ASP.NET RDLC 报表自定义数据源

最近一段时间开发ERP系统中要用到不少报表打印,在网上找了一圈发现想些好用的报表控件大部分要收费,一些面免费要么不好用要么IE8不兼容,最后还是用了微软自带的RDLC报表,把自己遇到的坑和技巧整理分享出来. 一般Visaul Studio上新建的的EDLC报表文件之后数据源都是按照向导直接连接数据库,自动生成数据源和数据集的,但是遇到一些复杂的就不够灵活. 一.新建报表 1.新建一个空白的报表如下 2.打开新建好的空报表文件,选择报表文件右键选择[打开方式]→[XML(文本)编辑]打开 在Pag

ASP.NET 给报表动态绑定数据源【CS代码】

DataSet ds = SYS_GroupTrafficStatistic_SERVICE.GetList(V_CID, V_STARTTIME, V_ENDTIME, V_TIME_GRADE, V_SHOW_TIME_TYPE); sys_ui_grouptrafficstatistic_reportviewer.LocalReport.DataSources.Clear(); sys_ui_grouptrafficstatistic_reportviewer.LocalReport.Da

ASP.NET数据报表之柱状图 ------工作日志

#region 柱形色调 /// <summary> /// 柱形色调 /// </summary> private string[] myColor = new string[] { "DarkGreen", "DimGray", "DodgerBlue", "Orchid", //Peru "Orange", "Orchid", "Gold"

Stimulsoft Reports.Silverlight是一款强大的基于Silverlight平台的报表创建工具控件

Stimulsoft Reports.Silverlight是一款强大的基于Silverlight平台的报表创建工具控件.该产品有三个部分组成.第一部分是用于在Web浏览器中浏览和编辑的ASP.NET组件集.报表在服务器端渲染,在客户端进行显示和编辑报表.第二部分是基于Silverlight的功能齐全的报表工具,它只通过Silverlight来渲染,编辑,打印和导出报表.第三部分是一个用于WinForms平台的独立(独立的)的报表设计器.该部分是用于创建报表以及为能够进一步与其他组件一起使用 具

在ASP.NET Web API 2中使用Owin OAuth 刷新令牌

在上篇文章介绍了Web Api中使用令牌进行授权的后端实现方法,基于WebApi2和OWIN OAuth实现了获取access token,使用token访问需授权的资源信息.本文将介绍在Web Api中启用刷新令牌的后端实现. 本文要用到上篇文章所使用的代码,代码编写环境为VS 2017..Net Framework 4.7.2,数据库为MS SQL 2008 R2. OAuth 刷新令牌 上文已经搞了一套Token授权访问,这里有多出来一个刷新令牌(Refresh Token),平白添加程序

Asp.net SignalR 实现服务端消息推送到Web端

原文:http://www.cnblogs.com/wintersun/p/4148223.html 之前的文章介绍过Asp.net SignalR,  ASP .NET SignalR是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.  今天我们来实现服务端消息推送到Web端,   首先回顾一下它抽象层次图是这样的: 实际上 Asp.net SignalR 2 实现 服务端消息推送到Web端, 更加简单. 为了获取更好的可伸缩性, 我们引入消息队列, 看如下

ASP.NET Core——网址路由

网址路由在ASP.NET MVC中有两个主要目的,分别是比对通过浏览器传来的HTTP要求与响应适当的网址给浏览器,分别描述如下. 比对通过浏览器传来的HTTP要求 这个部分是为了能让客户端对ASP.NET网站进行要求时,能够通过网址路由查找适当的HttpHandler来处理网页,大致流程图如下: 如果HttpHandler是由MvcHandler来处理,那么这时候就会进入ASP.NET MVC的运行生命周期,并且会查找适当的Controller与Action进行处理,并适当地响应消息给客户端.