zoukankan      html  css  js  c++  java
  • 在GridView列中动态创建几个CheckBox(升级篇)

    想了解此篇,Insus.NET建议网友们先看这篇《http://www.cnblogs.com/insus/archive/2013/04/23/3035447.html》,因为此篇是那篇的基础上进行升级的。
    说实的,上一篇只是完成了基本的功能,怎样把字符串进行分割,并绑定至GridView的自定义模版上,最后的是处理用户选择的选项处理与存储在数据库中,还是在网页再次加载时,把上次选择的选项显示于checkBoxList控件内。
    这算不上是动态创建CheckBox。
    因此,在此次Insus.NET再使用另外完全不一样的方法,来实现这个相同的功能,也算得上重构了。

    将要显示CheckBox的列,将使用用户控件(ASCX)来替代。没有看错吧? 是的,没有看错,Insus.NET将创建一个用户控件来替代那一列。
    使用用户控件,需要考虑一些问题,GridView怎与用户控件互动,因为需要显示数据,还是存储用户选择的数据。其实以前Insus.NET实现的,全是网页与用户控件互动,还是头一次尝试GridView与用户控件互动。

    如果你想看看是怎样实现,可以继续往下看,因为还是较特别的方法。

    Ok,我们创建一个用户控件在站点上MyInfo.ascx,Html页很简单,只是拉放了一个CheckBoxLrist控件。


    在MyInfo.ascx.cs中,首先宣告两个私有变量,下图中的第11和12行代码,一个是CheckBoxList的数据源,另一个是用户选择的数据。

    上图中,第22行代码,就是如果_DataSource转换为字符串之后的长度小于等于0的话,将为处理以后的代码,即返回跳过。
    第24行代码,是CheckBoxList绑定的方法,还是就是第28行代码是把用户选择的数据绑定至CheckBoxList控件内上。

    接下来,我们先看CheckBoxlistParse()方法:

     第34行代码,是计算Split之后,共有多少组数据,把这个值赋给CheckBoxList的RepeatColumns属性。

    另一个方法CheckBoxlistBind(),这个方法是把用户选择的选项重新绑定至CheckBoxList控件上。CheckBoxList的Item是否是选择的,可以Selected()方法反映出来。

    上图高亮的方法,可参考下图:


    Ok, Insus.NET会把复杂的方法拆分更细小的方法,可从前一篇看到原版复杂的方法,整段处理的流程均写在一个方法内,日后很难维护的。

    用户控件写好了,把它拉入 GridView控件中:

    现在用户控件算是整合入GridView控件了,通讯是个问题。接口来解决,是Insus.NET惯用的方法。下面接口:

    接口有二个方法和一个函数,前二者将为GridView传值给用户控件,而函数将是用户控件给网页的OnClick事件服务。这个接口是为用户控件实作之用。

    上面用户控件实现接口,应该是写得简单明了。我们再打开.aspx.cs代码,看看和事件怎样改写:

    第36行是找到用户控件,并转为接口,因为前面我们已经把用户控件实作了接口,此时当然后可以转换对象为接口。然后把两个值分别赋值接口定义好的两个方法。
    第48行代码也是一样的理解,而51行代码,就是获取用户控件传过来的值。

    Ok,写完了,望你能有所收获。

  • 相关阅读:
    C/C++中浮点数输出格式问题
    C/C++中的输出对齐设置
    C++11 中的initialize_list
    c++中的构造函数初始化列表
    C++11中的array
    STL 中的链表排序
    poj1068 Parencodings
    poj 3295 Tautology
    How To Join XLA_AE_HEADERS and RCV_TRANSACTIONS(子分类账到事务处理追溯)
    销售订单的四个主要环节和每个环节用到的常用表
  • 原文地址:https://www.cnblogs.com/insus/p/3039115.html
Copyright © 2011-2022 走看看