省市县三级联动+CascadingDropDown+取值+赋值

最近制作了一个省市县三级联动的控件.期间错误不断,困难重重.综合网上的相关信息,加上我一直熬到凌晨六点的试验测试,终于完美解决!非常高兴.

以下是本次的经验总结:

1.出现错误:'sys'未定义的信息

这个是由于在web.config中定义错误引起的.(试验确定)

因为我的试验次数过多,中间的改动也很多,没能一一记录.所以下列展示出最终的适用web.config.

<system.web>
  <!--
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只在开发过程中将此值
            设置为 true。
        -->
  <compilation debug="true">
   <assemblies>
    <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
  <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的
            安全身份验证模式,
            以标识传入的用户。
        -->
  <authentication mode="Windows"/>
  <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        -->
    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
      <add verb="GET,HEAD,POST" path="*.asbx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit"/>
      </controls>
    </pages>

  </system.web>

主要部分就在这里,其它的配置部分与此无关.

2.错误信息 Method error 500,12300,12301

我制作的省市县三级联动控件,参考了如下链接的内容,并经过了改动:

http://blog.csdn.net/windok2004/archive/2008/12/11/3497733.aspx

此错误的解决方法

结合网上的说法:

首先单独测试所使用的webservice文件,例: PCAService.asmx

确认所用的方法能够调试通过.

在这里,附带一点信息:

string knownCategoryValues, string category

这两个参数,在单独测试webservice文件的方法时:

例如调试:GetCityContents(string knownCategoryValues, string category)时

string knownCategoryValues  输入形如: Province:110000 

这里的Province 是上一级的CascadingDropDownNameval_rue的category的值

这里的110000是上一级的value值

string category  输入自身级别的category的值.

为了避免阐述不清,附带我的完全单独测试参数:

总计三个webMethod:

GetProvinceContents
GetCityContents
GetAreaContents

第一级的:GetProvinceContents

knownCategoryValues      为空,不填

category   Province       填写Province
第二级的:GetCityContents

knownCategoryValues   Province:110000  填写Province:110000 

category   City      填写City

第三级的:GetAreaContents

knownCategoryValues     City:110100  填写City:110100 

category   Area       填写Area
3获取选择的值

可以使用形如以下的方式获得选择的值:

Label1.Text = ddlProvince.SelectedValue;
        Label2.Text=ddlCity.SelectedValue;
        Label3.Text=ddlVilliage.SelectedValue;

4.反向赋值给控件

可以使用如下形式

CascadingDropDown1.SelectedValue = "110000";
CascadingDropDown2.SelectedValue = "110100";
CascadingDropDown3.SelectedValue = "110103";

 

如下附我的使用样例:

Address ad = new Address();
            ad.LoadData(ID);
            CascadingDropDownProvince.SelectedValue=ad.UserProvince.ToString();
            CascadingDropDownCity.SelectedValue =ad.UserCity.ToString();
            CascadingDropDownArea.SelectedValue =ad.UserArea.ToString();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值