zoukankan      html  css  js  c++  java
  • GridView的使用技巧

         在众多的服务器端控件中,GridView这个控件大家并不是很陌生,因此,我在这里讲讲它的一些小的技巧。

      在我们需要将数据以表格的形式展示给用户时,不需要考虑效率时,服务器控件GridView是一个不错的选择。

      我们需要明确,在这张表格中,每列表示一个字段,每一行表示一条记录。每一行都是我们需要从数据库中取得数据,那么如何展示这个数据便是我们需要考虑的。我的习惯是将每一列转换成模板列,然后对应的绑定字段,这样做的好处是对程序员来说,自由性增强了,微软那套约束太强悍了,给程序员的自由性太差,幸好有模板列。

      首先,看你是否有模板列,如果没有,你可以点击GridView,选择添加新列,选择模板列,如图

                                                                          

    在得到了我们所希望的模板列后,我们便会对模板列进行编辑 如下图

                                                         

                                                          

                              在选择了我们所要编辑的模板列后,会得到如下所示

                              

       选择某个模板后,你可以看见众多的模板
       但是我们最常用的模板是TemplateField,在这里,程序员自由发挥的可能性更大,这里你可以根据需要将显示你所要显示的任何形式,如Lable、TextBox、LinkButton等等。,如有不懂的地方,可去MSDN查看帮助  

       而我们最常用的模板便是 ItemTemplate,我喜欢在这里面书写我的代码,如下

        <asp:TemplateField HeaderText="Sex" SortExpression="Sex">
          <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%#this.ReturnSex((Eval("sex").ToString())) %>'></asp:Label>
          </ItemTemplate>
        </asp:TemplateField>

      细心的朋友应该会发现,我在绑定字段的时候用的是Eval(),并没有用Bind(),因为Eval数据绑定是单向绑定的,只输出而不会回发,而Bind()数据绑定是双向的。当然效率肯定是不一样的了。

      如果控件有许多事件,你可以根据需要触发响应的事件,最主要的是Command事件 在此事件中有CommandEventArgs这个类,这个类有两个属性 CommandName,CommandArgument 可供我们大大的利用,我们可以往里面传递我们希望传递的数据,比如我们获得我们当前编辑行的的主键字段,根据主键字段然后去进行增删改查操作,这在工作中用到的最多。

         例如下面的代码

          <asp:ImageButton ID="ImageButton2" ImageUrl="~/images/new_del.gif"  runat="server" oncommand="ImageButton2_Command" CommandName='<%#Eval("column1") %>' OnClientClick="return confirm('are you sure!')" />

      在我们新增 CommandField一列并且让 ShowEditButton="True",我们在页面点击编辑链接后,会立刻触发 RowEditing 事件,如果让DeleteEditButton="True",如果点击编辑链接,则会立刻触发RowDeleting事件,而这些事件太过于繁琐,能避免尽量避免。毕竟我个人认为,自己手写代码自由度更高。
         但对于选择按钮来说,我个人挺喜欢的。 当我们点击选择按钮来说,会触发两个事件,即SelectedIndexChanging和SelectedIndexChanged 两个事件,而前面事件我个人认为似乎是来打酱油的,而后者事件更有用。
       在后面事件中,我们可以
         txtkey.Text = ((Label)gvSearch.SelectedRow.FindControl("lblkey")).Text
      在GridView中得到我们编辑一行的某列值 这有助于我们简单而快速的获得我们需要的某个值,这种方法是很有效的喔!

     为了实现 鼠标滑过一行变色的效果 我们可以在 RowCreated 事件中编写代码
       代码如下
        protected void gvSearch_RowCreated(object sender, GridViewRowEventArgs e)
            {

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#ccddee'");
                    e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
                }
               
            }
        当然 这样的效率是相当低下的,每创建一行 就会执行代码一次,而这样也造成了代码效率低下!

        谢谢各位看完本文章! 个人水平有限,如果有不对的地方,请见谅!

  • 相关阅读:
    用Taro写一个微信小程序——版本升级
    matlab subplot 的边距(with tight margins)
    Nginx(Tengine) 解决 unknown directive "stream" 问题
    MinIO 分布式集群搭建
    Docker 及 Docker Compose 日常操作(团队培训材料)
    基于 AdoptOpenjdk 官方 Dockerfile 制作 jre8 镜像(修改字符集和时区)
    Syncthing 开源文件同步工具
    Harbor 2.2.0 搭建与使用
    Centos7 使用 chronyd 进行时钟同步
    Centos7 安装 Python3 及配置国内源、虚拟环境
  • 原文地址:https://www.cnblogs.com/xianrongbin/p/2265035.html
Copyright © 2011-2022 走看看