Asp.Net2.0新GridView控件使用

GridView控件  GridView是ASP.NET 1.x的DataGrid控件的后继者。它提供了相同的基本功能集,同时增加了大量扩展和改进。如前所述,DataGrid(ASP.NET 2.0仍然完全支持)是一个功能非常强大的通用控件。然而,它有一个重大缺陷:它要求我们编写大量定制代码,甚至处理比较简单而常见的操作,诸如分页、排序、编辑或删除数据等也不例外。GridView控件旨在解决此限制,并以尽可能少的数 阅读详情

  原文地址:http://www.cnblogs.com/blueocean/articles/555855.html

一、Gridview中的内容导出到Excel

  在日常工作中,经常要将gridview中的内容导出到excel报表中去,在asp.net 2.0中,同样可以很方便地实现将整个gridview中的内容导出到excel报表中去,下面介绍其具体做法:

  首先,建立基本的页面default.aspx

<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
<br/>
<asp:Button ID="BtnExport" runat="server" OnClick="BtnExport_Click"
Text="Export to Excel" />
</form>

  在default.aspx.cs中,写入如下代码:

protected void Page_Load(object sender, EventArgs e)
{
 if (!Page.IsPostBack)
 {
  BindData();
 }
}
private void BindData()
{
 string query = "SELECT * FROM customers";
 SqlConnection myConnection = new SqlConnection(ConnectionString);
 SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);
 DataSet ds = new DataSet();
 ad.Fill(ds, "customers");
 GridView1.DataSource = ds;
 GridView1.DataBind();
}

public override void VerifyRenderingInServerForm(Control control)
{
 // Confirms that an HtmlForm control is rendered for
}

protected void Button1_Click(object sender, EventArgs e)
{
 Response.Clear();
 Response.AddHeader("content-disposition","attachment;filename=FileName.xls");
 Response.Charset = "gb2312";
 Response.ContentType = "application/vnd.xls";
 System.IO.StringWriter stringWrite = new System.IO.StringWriter();
 System.Web.UI.HtmlTextWriter htmlWrite =new HtmlTextWriter(stringWrite);

 GridView1.AllowPaging = false;
 BindData();
 GridView1.RenderControl(htmlWrite);

 Response.Write(stringWrite.ToString());
 Response.End();
 GridView1.AllowPaging = true;
 BindData();
}
protected void paging(object sender,GridViewPageEventArgs e)
{
 GridView1.PageIndex = e.NewPageIndex;
 BindData();
}

  在上面的代码中,我们首先将gridview绑定到指定的数据源中,然后在button1的按钮(用来做导出到EXCEL的)的事件中,写入相关的代码。这里使用Response.AddHeader("content-disposition","attachment;filename=exporttoexcel.xls");中的filename来指定将要导出的excel的文件名,这里是exporttoexcel.xls。要注意的是,由于gridview的内容可能是分页显示的,因此,这里在每次导出excel时,先将gridview的allowpaging属性设置为false,然后通过页面流的方式导出当前页的gridview到excel中,最后再重新设置其allowpaging属性。另外要注意的是,要写一个空的VerifyRenderingInServerForm方法(必须写),以确认在运行时为指定的ASP.NET 服务器控件呈现HtmlForm 控件。

   二、访问gridview中的各类控件

  在gridview中,经常要访问其中的各类控件,比如dropdownlist,radiobutton,checkbox等,下面归纳下在gridview中访问各类控件的方法。

  首先看下如何在gridview中访问dropdownlist控件。假设在一个gridviw中,展现的每条记录中都需要供用户用下拉选择的方式选择dropdownlist控件中的内容,则可以使用如下代码,当用户选择好gridview中的dropdownlist控件的选项后,点击按钮,则系统打印出用户到底选择了哪些dropdownlist控件,并输出它们的值。

public DataSet PopulateDropDownList()
{
 SqlConnection myConnection =new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString);
 SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM tblPhone", myConnection);
 DataSet ds = new DataSet();
 ad.Fill(ds, "tblPhone");
 return ds;
}

  上面的代码首先将数据库中tblphone表的数据以dataset的形式返回。然后在页面的itemtemplate中,如下设计:

<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSource="<%# PopulateDropDownList() %>"
DataTextField="Phone" DataValueField = "PhoneID">
</asp:DropDownList>
</ItemTemplate>

  这里注意dropdownlist控件的datasource属性绑定了刚才返回的dataset(调用了populatedropdownlist()方法),并要注意设置好datatextfield和datavaluefield属性。

  然后,在button的事件中,写入以下代码:

protected void Button2_Click(object sender, EventArgs e)
{
 StringBuilder str = new StringBuilder();
 foreach (GridViewRow gvr in GridView1.Rows)
 {
  string selectedText = ((DropDownList)gvr.FindControl("DropDownList1")).SelectedItem.Text;
  str.Append(selectedText);
 }
 Response.Write(str.ToString());
}

  这里,我们用循环,来获得每一行的dropdownlist控件的值,并且将值添加到字符串中最后输出。

  接着,我们来看下如何访问gridview控件中的checkbox控件。经常在gridview控件中,需要给用户多项选择的功能,这个时候就需要使用checkbox控件。首先我们建立一个模版列,其中有checkbox如下:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="PersonID" DataSourceID="mySource" Width="366px" CellPadding="4" ForeColor="#333333" GridLines="None">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="PersonID" HeaderText="PersonID" InsertVisible="False"
ReadOnly="True" SortExpression="PersonID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
<HeaderTemplate>
</HeaderTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

  为了示意性地讲解如何得到用户选择的checkbox,可以增加一个按钮,当用户选择gridview中的选项后,点该按钮,则可以输出用户选了哪些选项,在按钮的CLICK事件中写入如下代码:

for (int i = 0; i < GridView1.Rows.Count; i++)
{
 GridViewRow row = GridView1.Rows[i];
 bool isChecked = ((CheckBox) row.FindControl("chkSelect")).Checked;
 if (isChecked)
 {
  str.Append(GridView1.Rows[i].Cells[2].Text);
 }
}
Response.Write(str.ToString());

  接下来,我们添加一个全选的选择框,当用户选择该框时,可以全部选择gridview中的checkbox.首先我们在headtemplate中如下设计:

<HeaderTemplate>
<input id="chkAll" onclick="javascript:SelectAllCheckboxes(this);" runat="server" type="checkbox" />
</HeaderTemplate>

  javascript部分的代码如下所示:

<script language=javascript>
function SelectAllCheckboxes(spanChk){
 var oItem = spanChk.children;
 var theBox=(spanChk.type=="checkbox")?spanChk:spanChk.children.item[0];
 xState=theBox.checked;
 elm=theBox.form.elements;
 for(i=0;i<elm.length;i++)
 if(elm[i].type=="checkbox" && elm[i].id!=theBox.id)
 {
  if(elm[i].checked!=xState)
  elm[i].click();
 }
}
</script>

三、gridview中删除记录的处理

  在gridview中,我们都希望能在删除记录时,能弹出提示框予以提示,在asp.net 1.1中,都可以很容易实现,那么在asp.net 2.0中要如何实现呢?下面举例子说明,首先在HTML页面中设计好如下代码:

<asp:GridView DataKeyNames="CategoryID" ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound" OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting">
<Columns>
<asp:BoundField DataField="CategoryID" HeaderText="CategoryID" />
<asp:BoundField DataField="CategoryName" HeaderText="CategoryName" />
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" CommandArgument='<%# Eval("CategoryID") %>' CommandName="Delete" runat="server">Delete</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

  在上面的代码中,我们设置了一个链接linkbutton,其中指定了commandname为"Delete",commandargument为要删除的记录的ID编号,注意一旦commandname设置为delete这个名称后,gridview中的GridView_RowCommand 和 GridView_Row_Deleting 事件都会被激发接者,我们处理其rowdatabound事件中:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
  LinkButton l = (LinkButton)e.Row.FindControl("LinkButton1");
  l.Attributes.Add('onclick", "javascript:return " + "confirm("是否要删除该记录? " +
  DataBinder.Eval(e.Row.DataItem, "id") + "')");
 }
}

  在这段代码中,首先检查是否是datarow,是的话则得到每个linkbutton,再为其添加客户端代码,基本和asp.net 1.1的做法差不多。

  之后,当用户选择了确认删除后,我们有两种方法对其进行继续的后续删除处理,因为我们将删除按钮设置为Delete,方法一是在row_command事件中写入如下代码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
 if (e.CommandName == "Delete")
 {
  int id = Convert.ToInt32(e.CommandArgument);
  // 删除记录的专门过程
  DeleteRecordByID(id);
 }
}

  另外一种方法是使用gridview的row_deletting事件,先在页面HTML代码中,添加<asp:GridView DataKeyNames="CategoryID" ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound" onRowDeleting="GridView1_RowDeleting">
然后添加row_deleting事件:

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
 int categoryID = (int) GridView1.DataKeys[e.RowIndex].Value;
 DeleteRecordByID(categoryID);
}
CommandName 这里写了两种关于CommandName和CommandArgument的使用,一类是在后台写代码实现,一类是直接在控件付给属性值 立即下载

相关推荐

告别VMware Tools!用open-vm-tools在Ubuntu 22.04上搞定共享文件夹(附开机自动挂载)

本文详细介绍了在Ubuntu 22.04上使用open-vm-tools替代VMware Tools实现高效共享文件夹管理的方法。通过开源工具open-vm-tools,用户可避免传统方案的兼容性问题,享受自动适配内核、系统更新同步等优势。文章包含从安装配置到开机自动挂载的全流程指导,特别适合在VMware虚拟机中运行Ubuntu Desktop的开发者提升工作效率。

weixin_32520095的博客 584

C#如何在DataGridView里面添加一列复选框进行批量删除

前提 1,我的DataGridView名字是dgvwell 2,我想在第五列加入复选框以实现批量删除。 3,点击批量删除按钮(button1),再点击确定删除按钮(button3)来实现。 效果 代码 点击批量删除按钮触发的事件: //首先要判断是否为空表 //如果是空表要给出提示 if (dgvWell.Rows.Count < 1) ...

qq_40765166的博客 1757

三维重建之条纹投影结构光(三)——相位展开优化与多频外差实践

本文深入探讨了三维重建中条纹投影结构光技术的核心环节——相位展开优化。针对传统路径跟踪法存在的误差传播与路径依赖问题,重点解析了多频外差法的原理与优势,并通过详细的C++代码实践,展示了如何利用三频外差法实现鲁棒、高精度的相位展开,从而获得连续的绝对相位图,为后续三维点云生成奠定坚实基础。

weixin_29074295的博客 530

ASP.NET2.0中Gridview中数据操作技巧

    Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,最近学习了该控件的使用,继续总结一下有关心得,原文已发表在http://dev.yesky.com/msdn/483/2329483.shtml上.    Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,在前面的系列文章里,分别展示了其中很多的基本用法和技巧(详见<<ASP.

jackyrongvip的专栏 747

从零到一:用AXI DataMover在Zynq MPSoC上实现高效DMA传输(附Vitis HLS驱动示例)

本文详细介绍了如何在Xilinx Zynq UltraScale+ MPSoC平台上使用AXI DataMover实现高效的DMA数据传输。通过解析AXI DataMover架构、Vivado工程配置、Vitis HLS驱动开发及性能优化技巧,帮助开发者快速构建高性能数据传输通道,并提供了可直接复用的代码示例。

weixin_42520796的博客 424

PyMySQLSaver实战:构建高可靠性的LangGraph状态管理

本文详细介绍了如何使用PyMySQLSaver构建高可靠性的LangGraph状态管理系统。通过检查点机制和MySQL持久化技术,开发者可以确保AI应用在崩溃后从最近状态恢复,支持长时间运行任务和多轮交互。文章包含核心架构解析、生产环境部署指南及实战案例,帮助开发者掌握状态管理的核心技术。

weixin_29310605的博客 494

gridview中的commandname

前台代码: &lt;asp:GridView ID="ClientGridview" runat="server" AutoGenerateColumns="false" DataKeyNames="ClientID" Font-Size="Small" OnRowCommand="ClientGridview_RowCommand"&a

iamjjt的专栏 618

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权

oscp备考,oscp系列——Djinn3靶场:ssti漏洞,pkexec提权难度简单偏上对于低权限shell获取涉及:ssti漏洞对于提权:pkexec提权。

2202_75361164的博客 633

必须在 GridView“GridView1”上指定数据键

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)    {            lblId.Text = GridView1.SelectedDataKey.Value.ToStr

xwygn的专栏 5812

《网络安全自学教程》- 防火墙原理分析与Windows防火墙使用配置

防火墙分类及原理,Windows开启防火墙,Windows防火墙添加策略,

wangyuxiang946的博客 1万+

如何利用air780e与stm32c8c6进行通信实现给手机发送一条英文短信的功能?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1237

ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了!

ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了!发布日期: 2005-1-13 | 更新日期: 2005-1-13Dino Esposito本文参考 2004 年 5 月的 ASP.NET 2.0 技术预览版本。文中包含的所有信息均有可能变更。本文讨论:

yzc的专栏 2822

Oracle EBS Interface/API(43) -自定义AP发票状态说明API

在某项目,客户需求获得AP发票的状态说明,例如对账系统或者某些报表。由于标准系统未提供状态说明,需要通过AP发票的标准Form获得相关业务逻辑,然后自定义AP发票状态说明API。

陈显平的专栏-Oracle EBS 605

Simplified and Extended Data Binding Syntax in ASP.NET 2.0(part1)

Introduction The server-side data binding techniques that were introduced in ASP.NET version 1.0 revolutionized the way developers build pages that access data. No longer was there a requirement for

流男@水孩 1453

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

gridview提交后字体变大问题的解决方法

       asp.net 2.0中,一般都会用gridview来显示数据,但最近遇到一个问题那就是提交后重新绑定gridview控件后,gridview的head部分的字体大小会变大,这样会影响页面的布置.于是google了一上发现一篇文章【CSS技巧】新标准带来的新问题 今天一个网友询问:在 ASP.NET 2.0中Response.Write出来的内容为什么与控件直接赋值的结果

blog之antyi 3220

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ASP.NET 2.0的新特征

简化的Code-Behind 在这种模式下,页面被定义一个partial类,使得页面和代码可以被编译成一个类。 页面通过指令的CodeFile属性引用code-behind代码, Inherits属性指定类名称。 这种模式和以前相比不在需要分别声明变量, 简化了code-behind页面的维护。   共享代码     和普遍的页面一样,任意的代码文件也可以动态的编译。 AS

Leanrun's Blog 399

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

asp.net 2.0有感-2.0的变化(1)

asp.net2.0离我们的脚步越来越近了,我也粗略的看了看,在这里我把我的感想告诉大家,欢迎指正!首先让我们简要看看2.0比以前的版本有什么新的变化和提高。1.新的控件     在2.0中将有超过40个新的控件,将大大的简化开发的难度。在我们所关心的数据控件方面,新的DataGrid控件GridView出现在我们的面前,这个将代替DataGrid出现在以后的开发中。     Grid

挑战自我 2236

Simplified and Extended Data Binding Syntax in ASP.NET 2.0

Table of Contents &lt;!-- OAS_AD('flex'); //--&gt; &lt;!-- google_ad_client = "pub-1542794976976253"; /* RON INTL BOB */ google_ad_slot = "7134095850"; google_ad...

技术代码资料库 191

ASP.NET 2.0 数据绑定概述(谭振林)

1、为什么ASP.NET 2.0中的数据绑定控件不需要写代码就能完成更新、删除、新建等数据操作? 在ASP.NET 1.x时,DataGrid等控件使用DataBinder.Eval(Container.DataItem,"ColumnName")这样的表达式可以将数据源中的数据绑定到控件上,但并不能在更新数据时自动将控件中的新值取出,更新回数据库。所以ASP.NET 2.0中的数据绑定分为...

weixin_30794851的博客 89

ASP.NET——GridView控件绑定数据

ASP.NET提供了许多种数据服务器控件,用于在Web页面中显示数据库中的表数据,GridView控件就是其中之一。这个控件和我们以前学过的DataGridView控件几乎是一样的,所以对GridView控件我们也并不陌生,下面简单介绍一下它的使用。         前台: 在工具箱中找到GridView控件,并把它拖拽到代码编辑区域。                  第一步,进入设计界

周江霄 2万+

ASP.NET2.0 GridView 选择 更新 删除 使用详解

  ASP.NET2.0 GridView 更新删除使用详解  在ASP.NET2.0中,微软使用GridView控件代替了已经使用多年的DataGrid,使得开发人可以更快的实现网格中数据的多种操作。但无论是互联网上,还是各种书籍对此控件的详细使用方式说的都非常的少,导致学习者要浪费很的时间来学习该控件的特性。因此,本文将尽量详细的说明GridView控件的使用方法。      

2737

使用ASP.NET 2.0中的GridView控件

 在ASP.NET 2.0中,加入了许多新的功能和控件,相比asp.net 1.0/1.1,在各方面都有了很大的提高。其中,在数据控件方面,增加了不少控件,其中的gridview控件功能十分强大。在本文中,将一步步以实际例子为读者介绍asp.ne 2.0中gridview控件的简单使用。  用过asp.net 1.0/1.1的朋友或者也感觉到,其中的datagrid控件功能是十分强大而且实用的,但

海雅 海的雅致 956
上一篇: 如何在aspx页面中使用ascx控件(用户自定义的一个控件)?
下一篇: ASP.NET 水晶报表使用
sdudubing
博客等级 码龄16年 117粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值