• GridView里面的HyperLink和ButtonField操作总结


    HyperLink的操作前段时间已经研究的颇有心得了,但是ButtonField却一直没有解决,这个问题困扰了我多日,中间因为考试中段了一段时间,现在重新找出来发现问题还是没有解决,在查找了一些资料之后终于搞定了,其实挺简单的,这里面用到了一个小技巧,那就是使用TemplateField。

      HyperLink的应用只要是页面转向,中间要设置一些诸如ID啊、NAME啊之类的属性,用起来非常方便,其主要属性设置为:

    aspx Code
    <asp:HyperLinkField DataNavigateUrlFields="UserId,UserName" DataNavigateUrlFormatString="userdetail.aspx?UserId={0} &amp; UserName={1}" DataTextField="UserName" HeaderText="用户详细信息" Target="_blank" />

    看上去是不是非常强悍?用起来更强悍!

    ButtonField的属性主要的就一个CommandName,看起来很羸弱,用起来也是如此。看看它的典型应用的属性设置吧:

    aspx Code
    <asp:ButtonField ButtonType="Button" CommandName="Click1" Text="按钮点击事件1" />
    <asp:ButtonField ButtonType="Button" CommandName="Click2" Text="按钮点击事件2" />
    c# Code
    protected   void  GridView1_OnRowCommand( object  sender, GridViewCommandEventArgs e) 
    {
           if  (e.CommandName.ToString() ==("Click1"))
               Label1.Text = "you Click" + e.CommandName.ToString()+1111;
    
          else
              Label1.Text = "you Click" + e.CommandName.ToString() + 222; 
    
    }

    这个CommandNam就是为了判断选取的是哪一列的按钮。虽然代码和属性都很简单,但是ButtonField应用起来很多地方不方便,比如在AJAX架构中放在UpdatePanel种的时候,使用JavaScript就让人困扰。于是我们来介绍一下模板列TemplateField。

    很多ASP.NET 2.0程序设计高手在网上贴了很多怎么转换和使用模板列,这里就直接拿过来了:

    View Code
    /*
    1、点击GridView的快捷箭头,选‘编辑列’。
    2、加入一个ButtonFiled,在右边的属性框里设置HeadText(用以显示),定义一个CommandName(用以你点击以后触发的动作)
    3、点右下角的‘转化为模版列’,ok。
    4、右击GridView,‘编辑模版’--‘Column[..]--你之前定义的HeadText’,ItemTemplate里看见你的按钮了吗?点中,属性里有一项‘OnClientClick’,把“javascript:return confirm('真的要删除吗?');”粘贴进去。
    5、搞定你需要的功能了。
    6、如果你想点击按钮触发其他事件,可以在RowCommand事件里详细写。。。
    */
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "MyBtnClicked")//前面你定义的CommandName
        {
            Response.Write("kkk clicked");
        }
    }

    如果你使用了微软的数据源空间SqlDataSource,那么你还可以直接设置Button将要操作的数据列,而不用再去写代码,如下设置:

    1、在前面的步骤4中,你在itemTemplate里看见你的按钮右上角的小箭头了吧,verygood,点击‘编辑DataBings’。。。

    2、看见这一级别的绑定了吗?把 CommandArgument和你想操作的字段绑定吧。。。(右边下拉列表选择)

    3、ok,现在你可以类似下面方法调用

    ------------------

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgse)

    {

      if (e.CommandName == "MyBtnClicked")

      {

        Response.Write("you wanted " + e.CommandArgument.ToString());

      }

    }

    ------------------

    你无非就是想取到结果集中的cell里的内容,现在你想得到的内容绑定在CommandArgument里了,你就不用再什么index什么cell[].text了(复杂的cell你还要findcontrol,呵呵)

  • 相关阅读:
    Java学习-008-判断文件类型实例
    Java学习-007-Log4J 日志记录配置文件详解及实例源代码
    Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver
    Java学习-005-初学常用的几个经典循环控制源代码
    Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)
    TestNG学习-002-annotaton 注解概述及其执行顺序
    C#设计模式之一单例模式(Singleton Pattern)【创建型】
    C#设计模式之二十三解释器模式(Interpreter Pattern)【行为型】
    C#设计模式之二十二备忘录模式(Memento Pattern)【行为型】
    C#设计模式之二十一访问者模式(Visitor Pattern)【行为型】
  • 原文地址:https://www.cnblogs.com/ToddLai/p/2755593.html
Copyright © 2020-2023  润新知