Jquery 重新加载扩展下拉列表

Jquery 重新加载扩展下拉列表,jquery,asp.net,drop-down-menu,dropdownbox,Jquery,Asp.net,Drop Down Menu,Dropdownbox,在我的页面上,我没有一个原生的dropdownlist(从dropdownlist扩展而来的)组件。我在类构造函数方法中插入数据,但现在每次创建新对象时,我都要刷新这些数据,我尝试使用Jquery,但它不起作用,我不知道如何调用DropDownList extended中包含的Bind方法,请遵循以下代码: 扩展下拉列表: public class XDDLprobabilidadesDeSucesso : XDropDownList { public XDDLprobabilidade

在我的页面上,我没有一个原生的dropdownlist(从dropdownlist扩展而来的)组件。我在类构造函数方法中插入数据,但现在每次创建新对象时,我都要刷新这些数据,我尝试使用Jquery,但它不起作用,我不知道如何调用DropDownList extended中包含的Bind方法,请遵循以下代码:

扩展下拉列表:

public class XDDLprobabilidadesDeSucesso : XDropDownList
{
    public XDDLprobabilidadesDeSucesso()
    {
        this.DataSource = GetDataBind();
        this.DataTextField = "text";
        this.DataValueField = "id";
        this.DataBind();
    }

    private List<DDLBindType> GetDataBind()
    {
        List<DDLBindType> l = new List<DDLBindType>();
        BLLProbabilidadesSucesso probabilidade = new BLLProbabilidadesSucesso();
        List<ProbabilidadesSucesso> probabilidades = probabilidade.Retrieve().ToList();

        DDLBindType item = new DDLBindType();

        item.id = 0;
        item.text = "Selecione";
        l.Add(item);

        foreach (ProbabilidadesSucesso prob in probabilidades)
        {
            item = new DDLBindType();
            item.id = prob.idProbSucesso;
            item.text = prob.porcentagem.Value.ToString();
            l.Add(item);
        }

        return l;
    }
}
公共类xddlProbabilidadesucesso:XDropDownList
{
公共XDDLProbabilidadesucesso()
{
this.DataSource=GetDataBind();
this.DataTextField=“text”;
this.DataValueField=“id”;
这个.DataBind();
}
私有列表GetDataBind()
{
列表l=新列表();
BLLProbabilidadesSucesso probabilidade=新的BLLProbabilidadesSucesso();
List probabilidades=probabilidade.Retrieve().ToList();
DDLBindType项=新的DDLBindType();
item.id=0;
item.text=“Selecione”;
l、 增加(项目);
foreach(概率中的prob)
{
item=新的DDLBindType();
item.id=prob.idProbSucesso;
item.text=prob.porcentagem.Value.ToString();
l、 增加(项目);
}
返回l;
}
}
你能看到吗,数据绑定在类构造函数中被调用了?如何从Jquery中再次调用此方法?(显然,我必须创建一个公共访问器)

任何答案都是有用的。
提前感谢。

尝试在客户端上“绑定”asp控件时会出现一些问题

  • 第一个问题是,一旦它在客户机上,它通常是 HTML元素的集合。一个或多个元素包含 “绑定”数据可能不明显,尤其是在绑定期间 流程属性被添加到元素中
  • 第二个问题是,你不会有任何控制权 在客户端生成脚本。所以你要做什么来改变它 外观必须通过脚本手动完成
因此,要实现这一点,您需要执行以下操作:

首先弄清楚控件是如何呈现的。由于这是一个下拉列表,我假设它呈现为一个
select
,除非它是某种支持图像的下拉列表,在这种情况下,这将非常困难

一旦知道“绑定”数据在客户机上的位置,就要弄清楚如何选择它。一旦有了一个选择器可以可靠地获取适当的元素,请确保能够销毁和创建“绑定”元素

也就是说,在
选择
的情况下,确保您可以获得
选择
元素,并且可以删除其中包含的
选项
元素,并完全按照服务器“绑定”它们时的样子替换它们

我说首先要做这一切,因为如果您不能可靠地重新创建控件的结构,那么您就不能在客户端“绑定”

一旦有了选择器和方法来重新创建控件,就可以制作
webMethod
,以公开页面中的信息。查看页面,确保您在客户端拥有从服务器获取要“绑定”的信息所需的信息。您需要弄清楚服务器是否需要任何参数来收集正确的信息

webMethod
应该以您可以在客户端轻松消化的方式返回信息。您可以使用数据表或对象列表来完成此操作;您可以迭代的任何内容

不要担心序列化或反序列化,ASP将为您做到这一点;那样很酷。只要知道返回的对象的属性名,就可以使用现在的函数

一旦创建了
webMethod
,就可以在页面上创建AJAX调用,以获取要绑定的数据。在收集数据的ajax调用的成功回调中,需要呈现新信息

您需要清空
选择
,然后为返回的数据集中的每个对象重新填充
选项
元素。再次假设下拉列表呈现为
select
元素

这大概就是我在客户端“绑定”了一堆GridView和其他ASP控件,以避免整个页面的回发和刷新

这不是不可能,但也不是超级容易