zoukankan      html  css  js  c++  java
  • Asp.net中用户自定义控件 ascx的使用

    使用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的使用有个初步简单的了解。有好的方法相互交流,共同进步!

  • 相关阅读:
    Ubuntu 各版本的几个国内更新源
    input只读属性 设置和移除 选择数字
    安装mysql驱动之 mysqlclient 出现的报错处理(ubuntu16.04)
    ubuntu16.04 安装 python3.6, 并创建虚拟环境(使用python3.6)
    python tornado 中使用 flash消息闪现
    ubuntu查看mysql版本的几种方法
    Ubuntu 下查看已安装的软件
    python ORM
    3、MongoDB的使用
    2、MongoDB安装
  • 原文地址:https://www.cnblogs.com/myssh/p/1391420.html
Copyright © 2011-2022 走看看