当前位置: 首页 > 编程日记 > 正文

关于GridView手动绑定的一段代码,一切尽在不言中

       为GridView绑定主键的方法,在前台的DataGrid标签中加   DataKeyNames="ID"   

后台获取ID:  int  id=int.parse(this.GridView.DataKeys[e.RowIndex].Value.Tostring());

如果DataKeyNames绑定了多个列取法:int  id=int.parse(this.GridView.DataKeys[e.RowIndex].Value["ID"].Tostring());

*****注意GridView在执行添删改时如果是提交性质按钮一定会触发GridView_RowCommand( , )事件

            在此事件下通过e.CommandName属性便可知道是按了添删改的那个按钮

  下面是GridView实现全选和取消全选的功能实现:

             为GridView1添加一个模板列,给其头模板添<HeaderTemplate>加一个Html控件CheckBox,添加

   onClick事件代码如下

<HeaderTemplate>
       <input id="chkSelectAll" type="checkbox" value="全选" οnclick="SelectAll(this)" />
     </HeaderTemplate>

         给其项模板<ItemTemplate>添加服务端控件CheckBox。在页面的头标签<head>中添加如下JS方法实现:  

<head runat="server">
          <title>无标题页</title>
          <script type="text/javascript">
             function SelectAll(oCheck)
              {
                 var oTable = document.getElementById("GridView1");
                 if (oTable)
                  {
                     var oInputs = oTable.getElementsByTagName("input");
                     for (var i = 0; i < oInputs.length; i++)
                      {
                          if (oInputs[i].type == "checkbox")
                            {
                               oInputs[i].checked = oCheck.checked;
                            }
                      }
                  }
              }
           </script>
         </head>

 

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

public partial class GridViewDemo_Default3 : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            ShowCategories();

            ShowProducts();

        }

    }

    private void ShowProducts()

    {

        DataTable dt = NorthWind.DBHelp.GetTable("SELECT Product.产品ID, Product.产品名称, Supply.公司名称, Supply.城市, Category.类别名称, Category.图片, Product.单位数量, Product.单价, Product.库存量, Product.中止 FROM Category INNER JOIN Product ON Category.类别ID = Product.类别ID INNER JOIN Supply ON Product.供应商ID = Supply.供应商ID where Product.类别ID="+int.Parse(this.DropDownList1.SelectedValue));

        this.GridView1.DataSource = dt;

        this.GridView1.DataKeyNames = new string[]{"产品ID"};//设置数据操作的主键列

        this.GridView1.DataBind();

    }

    private void ShowCategories()

    {

        DataTable dt = NorthWind.DBHelp.GetTable("select * from Category");

        this.DropDownList1.DataSource = dt;

        this.DropDownList1.DataTextField = "类别名称";

        this.DropDownList1.DataValueField = "类别ID";

        this.DropDownList1.DataBind();

    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)

    {

        ShowProducts();

    }

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)

    {

    }

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

    {

        //将当前要编辑的行的索引告诉GridView

        this.GridView1.EditIndex = e.NewEditIndex;

        ShowProducts();

    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)

    {

        //更新数据库

        decimal price = decimal.Parse(((TextBox)this.GridView1.Rows[e.RowIndex].Cells[3].FindControl("TextBox1")).Text);

        int productid = int.Parse(this.GridView1.DataKeys[e.RowIndex].Value.ToString());//获取当前行的主键

        //更新到数据库

        NorthWind.DBHelp.ExecuteNoQuery("update Product set 单价="+price+" where 产品ID="+productid);

        //重新绑定

        this.GridView1.EditIndex = -1;

        ShowProducts();

    }

    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)

    {

        this.GridView1.EditIndex = -1;

        ShowProducts();

    }

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {

        //删除数据

        int productid = int.Parse(this.GridView1.DataKeys[e.RowIndex].Value.ToString());//获取当前行的主键

        //更新到数据库

        NorthWind.DBHelp.ExecuteNoQuery("delete from Product where 产品ID=" + productid);

        //重新绑定

        this.GridView1.EditIndex = -1;

        ShowProducts();

    }

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        //当我们对数据源中的每一行进行数据绑定时触发的事件

        if (e.Row.RowType == DataControlRowType.DataRow)//判断绑定时候该行的状态时数据行还是其他类型的模板

        {

        //如果要把ID列绑到GridView中为连续不断的ID,可先添加绑定列ID,取消其DataFiled的绑定,在该事件加下面代码:

              //e.Row.Cells[0].Text=(e.Row.RowIndex+1).ToString();

            //添加客户端确认

            LinkButton lnkDelete = (LinkButton)e.Row.Cells[10].FindControl("lnkDelete");

            lnkDelete.Attributes.Add("onclick", "return confirm('你确认删除吗?')");

            //光棒效果 和  鼠标小手效果

            e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#ff66cc';this.style.cursor='pointer';");

            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c;this.style.cursor='default';");

        }

    }

    protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)

    {

        //获取全选的复选框

        CheckBox chkSelectAll = (CheckBox)sender;

        //获取每一行的复选框

        for (int i = 0; i < this.GridView1.Rows.Count; i++)

        {

            CheckBox chkSelect = (CheckBox)this.GridView1.Rows[i].Cells[11].FindControl("chkSelect");

            //修改状态

            chkSelect.Checked = chkSelectAll.Checked;

        }

    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

    {

        //告诉GridView当前显示的数据是第几页的数据

        this.GridView1.PageIndex= e.NewPageIndex;

        ShowProducts();

    }

}

转载于:https://www.cnblogs.com/yingger/archive/2012/04/21/2462454.html

相关文章:

linux 服务器FTP服务安装教程

1.更新yum源 首先需要更新系统的yum源&#xff0c;便捷工具下载地址&#xff1a;http://help.aliyun.com/manual?spm0.0.0.0.zJ3dBU&helpId1692 2.安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 3.添加ftp帐号和目录 先检查一下nologin的位置&#xff0c;通常在…

CSS3颜色不透明度如何设置

web前端技术包含HTML和CSS样式&#xff0c;两者是相辅相成的&#xff0c;学习CSS样式不必可少&#xff0c;那么在学习CSS样式中&#xff0c;CSS3颜色不透明度如何设置?在CSS3之前&#xff0c;我们设置颜色的方式包含十六进制颜色(如#F00)、rgb模式颜色、或指定颜色的英文名称(…

技术图文:02 创建型设计模式(上)

创建型设计模式&#xff08;上&#xff09; 知识结构&#xff1a; 图1 知识结构 简单工厂模式 Sunny 软件公司欲基于 C# 语言开发一套图表库&#xff0c;该图表库可以为应用系统提供各种不同外观的图表&#xff0c;如&#xff1a; 柱状图&#xff08;histogram&#xff09;饼…

转:初探 jQuery 的 Sizzle 选择器

这是一篇关于介绍jQuery Sizzle选择器的文章&#xff0c;由我和obility共同完成。在文中&#xff0c;我们试图用自己的语言配以适量的代码向读者展现出Sizzle在处理选择符时的流程原理&#xff0c;以及末了以少许文字给你展示出如何借用Sizzle之手实现自定义选择器&#xff08;…

安装hadoop图文

1.下载hadoop-2.5.1,存放根目录 2.通过tar -zxvf 包名 来进行解压 3.通过mv命令将解压后的hadoop包移动到/home下 4.修改hadoop-en.sh配置文件,添加jdk的安装目录,操作如下图所示 5.修改core-site.xml配置文件,添加namenode的配置信息 6.修改hdfs-site.xml配置文件,添加seconda…

Java中父类方法重写有哪些需要注意的?

在继承关系中&#xff0c;子类会自动继承父类中公共的方法&#xff0c;但有时在子类中需要对继承的方法进行一些修改&#xff0c;即对父类的方法进行重写。需要注意的是&#xff0c;子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。 在上一节…

技术图文:02 创建型设计模式(下)

创建型设计模式&#xff08;下&#xff09; 知识结构&#xff1a; 图1 知识结构 单例模式 – 确保对象的唯一性 Sunny 软件公司承接了一个服务器负载均衡软件的开发工作&#xff0c;该软件运行在一台负载均衡服务器上&#xff0c;可以将并发访问和数据流量分发到服务器集群中…

[转载]C# 二进制与十进制,十进制与十六进制相互转换

原文地址&#xff1a;C# 二进制与十进制,十进制与十六进制相互转换作者&#xff1a;tonytonglx十进制转二进制&#xff1a;用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302302/2 151 余0151/2 75 余175/2 37 余137/2 18 余118/2 9 余09/2 4 余14/2 …

感知哈希算法——找出相似的图片

参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹越相似, 说明两张图片就越相似. 但关键是如何根据图片计算出"指纹"呢? 下面用最简单的步…

学web前端需要了解哪些常识

想要学好web前端技术&#xff0c;那么一定要掌握足够的知识&#xff0c;web前端技术包含很多方面的知识&#xff0c;具体学web前端需要了解哪些常识?来看看下面的详细介绍。 学web前端需要了解哪些常识? html css javascript。 要学的内容实在很多&#xff0c;如果没有其他编…

linux下后台执行shell脚本

一句话 nohup sh startup_Server.sh & 转载于:https://www.cnblogs.com/phpcode/archive/2012/04/24/2522761.html

线性代数:第一章 线性方程组

本讲义是自己上课所用幻灯片&#xff0c;里面没有详细的推导过程&#xff08;笔者板书推导&#xff09;只以大纲的方式来展示课上的内容&#xff0c;以方便大家下来复习。 从本章开始&#xff0c;我们一起来学习线性代数的有关知识&#xff0c;线性代数的应用之一就是求解复杂…

菜鸟也来学习ORACLE(1)_linux下安装oracle 11g

加入 oracle Club 之前&#xff0c;学长给我们开了个小会 说是看看我们加入的意愿&#xff0c;哎哎 其实直无聊&#xff0c;但是大体比较重视linux 服务器的搭建 以及在linux 下安装oracle 搭建一个oracle 环境吧、我就想这东西能有多难&#xff0c;于是回来就搭建起了&#x…

CSS浮动元素特点有什么

什么是浮动? 元素的浮动是指设置了浮动属性(flot)的元素。 CSS浮动有什么作用? 1.让多个盒子水平排列成一行&#xff0c;浮动成为布局的重要手段; 2.可以实现盒子的左右对齐等等; 3.浮动最早是用来控制图片&#xff0c;实现文字环绕图片的效果。 CSS浮动的语法&#xff1a; 选…

数据结构与算法:11 Leetcode同步练习(四)

目录 题目01&#xff1a;最小栈题目02&#xff1a;有效的括号题目03&#xff1a;用队列实现栈题目04&#xff1a;整数反转题目05&#xff1a;逆波兰表达式求值题目06&#xff1a;全排列题目07&#xff1a;字符串转换整数 (atoi)题目08&#xff1a;设计循环双端队列题目09&…

trie树 详解

前几天学习了并查集和trie树&#xff0c;这里总结一下trie。 本文讨论一棵最简单的trie树&#xff0c;基于英文26个字母组成的字符串&#xff0c;讨论插入字符串、判断前缀是否存在、查找字符串等基本操作&#xff1b;至于trie树的删除单个节点实在是少见&#xff0c;故在此…

启动hadoop的节点

1.启动hadoop的节点 start-dfs.sh 本文转自 素颜猪 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/suyanzhu/1959242

什么是Python线程?Python线程如何创建?

相信正在学习Python技术或者对Python语言有一定了解的人对于Python线程应该都不陌生&#xff0c;但是也有刚接触Python的小伙伴对于Python线程并不了解&#xff0c;今天小编就跟大家聊聊什么是Python线程&#xff0c;又该如何创建Python线程! 什么是Python线程?Python线程如何…

ItemAdding实现数据验证--中文字段,properties.AfterProperties值为null的问题

最近写事件接收器&#xff0c;发现中文字段如果直接用properties.AfterProperties[“申请人"]这样获取的值为null&#xff0c;无法得到值。后拉忽然发现用英文字段可以得到值。难道中文字段需要编码&#xff1f;经过测试果真如此。 代码部分如下&#xff1a;public overri…

jstl c:choose、c:when和c:otherwise标签

在用spring mvc中&#xff0c;页面前端老用jstl&#xff0c;记录一下。 <c:choose>、<c:when>和<c:otherwise>在一起连用&#xff0c;可以实现Java语言中的if-else语句的功能。例如以下代码根据username请求参数的值来打印不同的结果&#xff1a; <c:choo…

怎样设计出优秀的测试用例?看看下面就知道了

想要成为一名合格的软件测试工程师&#xff0c;一份合格软件测试报告是非常重要的&#xff0c;软件测试的核心也就是测试的用例了&#xff0c;我们通过用例可以看出怎么设计出来可以发现问题&#xff0c;可以有效的覆盖需求的&#xff0c;没有冗余的用例是每个测试工程师必须跨…

数据结构与算法:12 数组与稀疏矩阵

12 数组与稀疏矩阵 知识结构&#xff1a; 1. 数组 1.1 数组的定义 数组是具有一定顺序关系的若干对象组成的集合&#xff0c;组成数组的对象称为数组元素。 例如&#xff1a; 向量对应一维数组 A(a0,a1,⋯,an−1)A(a_0,a_1,\cdots,a_{n-1}) A(a0​,a1​,⋯,an−1​) 矩阵…

管理索引表:深入研究B树索引--重建,合并,删除(理论篇3)

重建索引  如果表中记录频繁地被删除或插入&#xff0c;尽管表中的记录总量保持不变&#xff0c;索引空间的使用量会不断增加。虽然记录从索引中被删除&#xff0c;但是该记录索引项的使用空间不能被重新使用。因此&#xff0c;如果表变化不定&#xff0c;索引空间量会不断增…

模块架构不是软件成功的“决定因素”

【本文是09年的一篇旧文&#xff0c;出于某些原因&#xff0c;对原文内容有删减&#xff0c;在这里整理后重新发表】 前言感谢XXX对我们技术&#xff0c;对我们公司产品提出这些意见&#xff0c;我们公司卖的是软件产品&#xff0c;开发软件是一件技术活&#xff0c;说实话&…

JavaScript面向对象修改标签页详解

双击标签页组件中的li小标签或者section 中的文本&#xff0c;可以对文本进行编辑。为了实现这个功能&#xff0c;需要先给li和section元素绑定双击事件&#xff0c;当双击文本后&#xff0c;将文本改成一个文本框&#xff0c;用来输入新的内容&#xff0c;在文本框中显示原来的…

数据结构与算法:13 字符串与整数集合

13 字符串与整数集合 知识点&#xff1a; 1. 字符串 我们古人没有电影电视&#xff0c;没有游戏网络&#xff0c;所以文人们就会想出一些文字游戏来娱乐。比如宋代的李禺写了这样一首诗&#xff1a;“枯眼望遥山隔水&#xff0c;往来曾见几心知&#xff1f;壶空怕酌一杯酒&am…

是时候开始使用JavaScript严格模式了怎样启用javascri

E是时候开始使用JavaScript严格模式了怎样启用javascriCMAScript5将严格模式(strictmode)引入了Javascript中&#xff0c;目的是允许开发人员能够选择“更好”的Javascript版本&#xff0c;这个版本能用不同的方式处理那些普遍而又臭名昭著的错误。一开始的时候&#xff0c;我对…

Linux服务器日志备份到本地

1、确定线上服务器的日志文件名称和路径 2、一台本地服务器能连接公网&#xff0c;创建一个日志账户&#xff0c;设置密码 3、线上服务器要求&#xff1a; a、确定是否已安装sshpass包 [rootiZwz9ghdadtaey1msor7gnZ sh]# rpm -qa|grep sshpass sshpass-1.06-1.el7.x86_64 如不…

学习UI设计能做什么

UI设计这个岗位对于目前的很多企业来说是供不应求的&#xff0c;很多刚培训完UI设计的小伙伴&#xff0c;都不知道该如何定位自己的职能岗&#xff0c;那么学习UI设计能做什么呢?来看看下面小编的详细介绍就知道了。 学习UI设计能做什么? 1、图形设计/界面设计 软件产品的产品…