在Ajax控件工具包级联下拉更新 [英] in Cascading dropdown update in Ajax Control Toolkit

查看:139
本文介绍了在Ajax控件工具包级联下拉更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到[MethodError 500]当我使用级联下拉。下面是我的code

 < TR>
&所述; TD>
选择主机托管服务提供商:
< / TD>
&所述; TD>
< ASP:DropDownList的ID =ddlFeaturedHoster=服务器>< / ASP:DropDownList的>
 < / TD>
 < / TR>
< ajaxToolkit:CascadingDropDown ID =cddHoster=服务器的TargetControlID =ddlFeaturedHoster
                             PromptText =选择主机托管服务提供商LoadingText =载入中...分类=ActiveHoster
                            ServiceMethod =GetDropDownContentsServicePath =〜/主机/ HostingService.asmx/>

服务code:

  [的WebMethod]
    [ScriptMethod]
    公共CascadingDropDownNameValue [] GetActiveHosters()
    {        清单< CascadingDropDownNameValue> returnList =新的List< CascadingDropDownNameValue>();
        HostersManager hosterManager =新HostersManager();
        清单< Hosters_HostingProviderDetail>托管= hosterManager.GetAllHosters();
        returnList.Add(新CascadingDropDownNameValue( - 请选择一个 - ,0,真));
        的foreach(在托管Hosters_HostingProviderDetail项)
        {
            returnList.Add(新CascadingDropDownNameValue(){名称= item.HostingProviderName,值= item.HosterID.ToString()});
        }
        返回returnList.ToArray();
    }
  [的WebMethod]
    [ScriptMethod]
    公共CascadingDropDownNameValue [] GetDropDownContents(字符串knownCategoryValues​​,串类)
    {
        knownCategoryValues​​ = FormatCategoryWord(knownCategoryValues​​);
        清单< CascadingDropDownNameValue>值=新的List< CascadingDropDownNameValue>();
        HostersManager hosterManager =新HostersManager();
        开关(类别)
        {
            案ActiveHoster:
                values​​.AddRange(GetActiveHosters());
                打破;
            案ActiveOffer:
                values​​.AddRange(GetActiveOffers(1));
                打破;
        }
        返回values​​.ToArray< CascadingDropDownNameValue>();    }    ///<总结>
    ///格式化类别词
    ///< /总结>
    ///< PARAM NAME =值>< /参数>
    ///<&回报GT;< /回报>
    私人字符串FormatCategoryWord(字符串值)
    {
        如果(string.IsNullOrEmpty(值))的返回值;
        如果(value.LastIndexOf(:)大于0)的值= value.Substring(value.LastIndexOf(:)+ 1);
        如果(value.LastIndexOf(;)大于0)的值= value.Substring(0,value.LastIndexOf(;));
        返回值;
    }}


解决方案

谈谈你的webMethods内一些尝试catch块一些异常记录?

I am getting [MethodError 500] when I use cascading drop down. below is my code

    <tr>
<td >
Select a Hoster: 
</td>
<td>
<asp:DropDownList ID="ddlFeaturedHoster" runat="server" ></asp:DropDownList>
 </td>
 </tr>


<ajaxToolkit:CascadingDropDown ID="cddHoster" runat="server" TargetControlID="ddlFeaturedHoster"
                             PromptText="Select a Hoster" LoadingText="Loading ..." Category="ActiveHoster"
                            ServiceMethod="GetDropDownContents" ServicePath="~/Hosting/HostingService.asmx"/>

Service Code:

 [WebMethod]
    [ScriptMethod]
    public CascadingDropDownNameValue[] GetActiveHosters()
    {

        List<CascadingDropDownNameValue> returnList = new List<CascadingDropDownNameValue>();
        HostersManager hosterManager = new HostersManager();
        List<Hosters_HostingProviderDetail> hosters = hosterManager.GetAllHosters();
        returnList.Add(new CascadingDropDownNameValue("--Please Select One--","0",true));
        foreach (Hosters_HostingProviderDetail item in hosters)
        {
            returnList.Add(new CascadingDropDownNameValue() {  name=item.HostingProviderName, value= item.HosterID.ToString()});
        }
        return returnList.ToArray() ;
    }
  [WebMethod]
    [ScriptMethod]
    public CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category)
    {
        knownCategoryValues = FormatCategoryWord(knownCategoryValues);
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        HostersManager hosterManager = new HostersManager();
        switch (category)
        {
            case "ActiveHoster":
                values.AddRange(GetActiveHosters());
                break;
            case "ActiveOffer":
                values.AddRange(GetActiveOffers(1));
                break;
        }
        return values.ToArray<CascadingDropDownNameValue>();

    }

    /// <summary>
    /// Formats the category word
    /// </summary>
    /// <param name="value"></param>
    /// <returns></returns>
    private string FormatCategoryWord(string value)
    {
        if (string.IsNullOrEmpty(value)) return value;
        if (value.LastIndexOf(":") > 0) value = value.Substring(value.LastIndexOf(":") + 1);
        if (value.LastIndexOf(";") > 0) value = value.Substring(0, value.LastIndexOf(";"));
        return value;
    }

}

解决方案

How about some try catch blocks within your webMethods with some exception logging?

这篇关于在Ajax控件工具包级联下拉更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆