使用ascx目的就是为了提高某部分功能的重复利用,我简单通过源代码说一下对它的参数的输入和数出。

我们以省市区三级连动为例子。

vs2005下ascx页面的代码:

<table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
          <td>
            <asp:DropDownList id="ddlProvince" runat="server" Width="100px" AutoPostBack="True" OnSelectedIndexChanged="ddlProvince_SelectedIndexChanged">   
            </asp:DropDownList>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline">
                  <ContentTemplate>
                    <asp:DropDownList id="ddlCity" runat="server" Width="100px" AutoPostBack="True" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged">          
                    </asp:DropDownList>
                  </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="ddlProvince" EventName="SelectedIndexChanged" />
                </Triggers>
              </asp:UpdatePanel>
              <asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline">
                  <ContentTemplate>
                    <asp:DropDownList id="ddlDistrict" runat="server" Width="100px">            
                     </asp:DropDownList>
                  </ContentTemplate>
                  <Triggers>
                      <asp:AsyncPostBackTrigger ControlID="ddlCity" EventName="SelectedIndexChanged" />
                  </Triggers>
              </asp:UpdatePanel>
          </td>
      </tr>
  </table>

ascx后台代码:

public partial class UserControl_ProvinceAndCityAndDistrict : System.Web.UI.UserControl
{
    ///// <summary>
    ///// 选择区域的iD
    ///// </summary>
    protected  string _districtValue;
    [Bindable(true), Category("Appearance"), DefaultValue("")]
    public string districtValue
    {
        get { return _districtValue; }
        set { _districtValue = value; }
    }

    protected  string _cityValue;
    [Bindable(true), Category("Appearance"), DefaultValue("")]
    public string cityValue
    {
        get { return _cityValue; }
        set { _cityValue = value; }
    }

    protected  string _provinceValue;
    [Bindable(true), Category("Appearance"), DefaultValue("")]
    public string provinceValue
    {
        get { return _provinceValue; }
        set { _provinceValue = value; }
    }

    private void setValue()
    {
        if (_provinceValue != string.Empty)
        {
            this.ddlProvince.SelectedItem.Text = _provinceValue;
        }
        if (_cityValue != string.Empty)
        {
            this.ddlCity.SelectedItem.Text = _cityValue;
        }
        if (_districtValue != string.Empty)
        {
            this.ddlDistrict.SelectedItem.Text = _districtValue;
        }
    }
    public string getValue()
    {
        return this.ddlProvince.SelectedItem.Text + "," + ddlCity.SelectedItem.Text + "," + ddlDistrict.SelectedItem.Text;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            setProvince();
            this.ddlProvince.SelectedIndex = 0;
            setCity(Convert.ToInt32(this.ddlProvince.SelectedValue));
            this.ddlCity.SelectedIndex = 0;
            setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
            setValue();
        }
    }
    private void setProvince()
    {
        CallCenter.BLL.sys_Province province = new CallCenter.BLL.sys_Province();
        DataSet ds = province.getProvinceList();
        this.ddlProvince.DataSource = ds.Tables[0];
        this.ddlProvince.DataValueField = "provinceid";
        this.ddlProvince.DataTextField = "provincename";
        this.ddlProvince.DataBind();
    }
    private void setCity(int provinceId)
    {
        CallCenter.BLL.sys_City city = new CallCenter.BLL.sys_City();
        DataSet ds = city.getCityList(provinceId);
        this.ddlCity.DataSource = ds.Tables[0];
        this.ddlCity.DataValueField = "cityid";
        this.ddlCity.DataTextField = "cityName";
        this.ddlCity.DataBind();
    }
    private void setDistrict(int cityId)
    {
        CallCenter.BLL.sys_District district = new CallCenter.BLL.sys_District();
        DataSet ds = district.getDistrictList(cityId);
        this.ddlDistrict.DataSource = ds.Tables[0];
        this.ddlDistrict.DataValueField = "districtid";
        this.ddlDistrict.DataTextField = "districtname";
        this.ddlDistrict.DataBind();
    }
    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e)
    {
        setCity(Convert.ToInt32(this.ddlProvince.SelectedValue));
        this.ddlCity.SelectedIndex = 0;
        setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
    }
    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
    }
}

使用aspx页面的后台调用部分代码:

如何传入参数,对于ascx的参数一般通过自定义页面属性来实现的。在ascx的页面我定义了几个属性

provincevalue,cityvalue,districtvalue,把你所需要传入的参数通过下面的方式给它就可以了,至于出入后你需要怎么处理你就自己操作了,上面有我的简单处理方式。

  string[] strAddress=ds.Tables[0].Rows[i]["value"].ToString().Split(',');
  this.ProvinceAndCityAndDistrict1.provinceValue = strAddress[0];
  this.ProvinceAndCityAndDistrict1.cityValue = strAddress[1];
  this.ProvinceAndCityAndDistrict1.districtValue = strAddress[2];

从ascx获取输出的东西的话,我目前采用的是通过公共函数调用来实现的

比如在对aspx页面的信息进行保存的时候,我要获取到当前所选择的省市区信息,我是通过方法getValue()来获取返回的字符窜的,你可以根据自己的需要来定义适当的方法。

this.ProvinceAndCityAndDistrict1.getValue();

希望我通过简单的举例说明能够帮助大家对ascx的使用有个初步简单的了解。有好的方法相互交流,共同进步!

Asp.net中用户自定义控件 ascx的使用的更多相关文章

  1. 最简实例演示asp.net5中用户认证和授权(4)

    上篇: 最简实例演示asp.net5中用户认证和授权(3) 上面我们把自定义认证和授权的相关的最小基础类和要实现的接口都实现了,下面就是如何来进行认证和授权的配置. 首先我们要告诉系统,我们的用户和角 ...

  2. 最简实例演示asp.net5中用户认证和授权(3)

    上接: 最简实例演示asp.net5中用户认证和授权(2) 在实现了角色的各种管理接口后,下一步就是实现对用户的管理,对用户管理的接口相对多一些,必须要实现的有如下三个: 1 public inter ...

  3. 最简实例演示asp.net5中用户认证和授权(2)

    上接最简实例演示asp.net5中用户认证和授权(1) 基础类建立好后,下一步就要创建对基础类进行操作的类了,也就是实现基础类的增删改查(听起来不太高大上),当然,为了使用asp.net5的认证机制, ...

  4. 最简实例演示asp.net5中用户认证和授权(1)

    asp.net5中,关于用户的认证和授权提供了非常丰富的功能,如果结合ef7的话,可以自动生成相关的数据库表,调用也很方便. 但是,要理解这么一大堆关于认证授权的类,或者想按照自己项目的特定要求对认证 ...

  5. Winform中用户自定义控件中外部设置子控件属性的方法

    假设我们新建立一个用户自定义控件,由一个lable1和pictureBox1组成 此时我们在外部调用该控件,然后想动态改变lable1的值,我们该怎么办? 假设实例化的用户控件名为UserContro ...

  6. ASP.NET用户自定义控件配置

    一直以来开发中碰到要写自定义控件的时候总是习惯性的找度娘,而没有自己记住,结果今天就悲剧了,找了半天才找到,想想还是自己积累起来吧! 第一种配置方式: 配置写在webconfig文件中,位置如下: w ...

  7. asp.net动态加载ascx用户控件

    原文:asp.net动态加载ascx用户控件 在主aspx/ascx文件中,将目标ascx1,ascx2控件拖拉到其页面中,然后删除,目的是要生成:Register 代码,然后在主文件中定义DIV或T ...

  8. asp.net中如何防止用户重复点击提交按钮

    asp.net中如何防止用户重复点击提交按钮   asp.net 中防止因为网速慢等影响交互的问题导致用户可能点击多次提交按钮,从而导致数据库中出现多条重复的记录,经过亲自验证在网上找的方法,找到两个 ...

  9. ASP.NET中在线用户统计

    统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法 ...

随机推荐

  1. Mysql 源码编译教程贴

    题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢! 如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴 环 ...

  2. 使用xshell出现乱码

    用xshell链接Linux出现乱码: 解决方法: 先查看Linux支持的字符类型是否为如下类型 如果是,则找到菜单中的文件选项,并在选项中找到属性: 单击属性选项,找到终端,将编码设置为UTF-8: ...

  3. 07_RHEL7配置yum源

    redhat 默认自带的 yum 源需要注册才能更新.想不花钱也可以更新,就需要替换掉redhat的yum源. 检查是否安装yum包 查看RHEL是否安装了yum,若是安装了,那么又有哪些yum包: ...

  4. Oracle 体系结构及安全管理

    1 oracle数据库服务器构成:数据库和实例2 oracle内部结构: 物理存储结构: 数据文件(xxx.dbf):存放数据 控制文件(xxx.ctl):控制数据库的完整性恢复数据或使用的日志文件 ...

  5. CRM窗体中只读的控件不会引发Update事件

    在CRM的窗体设计时,如果把某一个控件设为只读了,仅管你在后台用代码修改了值,这个值也不会起任何作用,更不会提交到后台,触发Update事件!

  6. Dede 查询附加表

    <!--使用dede:arclist取出信息 dede_archives 表 $sql="Select 字段 from dede_archivies",但是在默认情况下 de ...

  7. Delphi-CompareStr 函数

    函数名称 CompareStr 所在单元 System.SysUtils 函数原型 function CompareStr(const S1, S2: string): Integer; 函数功能 比 ...

  8. Codeforces 138D World of Darkraft

    有一个n*m 的棋盘,每个点上标记了L,R,X 中的一个每次能选择一个没有被攻击过的点(i,j),从这个点开始发射线,射线形状为:1. 若字符是 L,向左下角和右上角发,遇到被攻击过的点就停下来2. ...

  9. Forms & HTML 组件 - laravelcollective/html

    简书链接 :Forms & HTML 组件 - laravelcollective/html 安装 方法一: composer require laravelcollective/html 方 ...

  10. linux ftp 搭建和相关问题解决

    1. 查看是否安装vsftprpm –qa|grep vsftpd如果出现 vsftpd-2.0.5-16.el5_5.1 说明已经安装 vsftp 安装vsftpyum -y install vsf ...