我的页面上没有本机下拉列表(从下拉列表扩展)组件。我在类构造函数方法中插入数据,但现在我每次创建一个新对象时都要刷新这些数据,我正在尝试使用Jquery但它不起作用,我不知道如何调用DropDownList扩展中包含的Bind方法,遵循以下代码:
Extended DropDownList:
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;
}
}
你能看到,DataBind是在类构造函数中调用的吗?如何从Jquery再次调用此方法? (显然我要创建一个公共访问者)
任何答案都是有用的。 提前谢谢。
答案 0 :(得分:1)
尝试在客户端上“绑定”asp控件时会遇到一些问题。
为此,您需要执行以下操作:
首先弄清楚控件的呈现方式。由于这是一个下拉,我假设它呈现为select
,除非它是某种图像启用下拉,在这种情况下,这将是非常困难。
一旦您知道客户端上“绑定”数据的位置,请弄清楚如何选择它。一旦你有一个可以可靠地获取适当元素的选择器,确保你能够销毁并创建'bound'元素。
也就是说,对于select
,请确保您可以获取select
元素,并且可以删除其中包含的option
元素并将其完全替换为它们是在服务器“绑定”的时候。
我说首先要做的就是这样做,因为如果你不能可靠地重新创建控件的结构,那么你将无法在客户端“绑定”。
一旦您有了重新创建控件的选择器和方法,那么就可以使webMethod
公开页面中的信息。查看页面并确保您在客户端获得所需信息,以便从服务器获取信息以“绑定”。您需要弄清楚服务器是否需要任何参数才能收集正确的信息。
webMethod
应该以您可以在客户端上轻松消化它的方式返回信息。您可以使用数据表或对象列表执行此操作;你可以迭代的任何东西。
不要担心序列化或反序列化,ASP会为您做到这一点;这样很酷。只要知道返回的对象的属性名称,就可以使用现在的函数。
创建webMethod
后,您可以在页面上创建AJAX调用以获取要绑定的数据。在成功回调ajax调用以收集数据时,您需要呈现新信息。
您需要清空select
,然后使用option
元素为您返回的数据集中的每个对象重新填充它。再次假设下拉列表呈现为select
元素。
这大致是我在客户端“绑定”了一堆gridviews和其他ASP控件,以避免整页回发和刷新。
这不是不可能,但并不是一件容易的事。