编辑2:
我尝试了一些新的东西,我添加了这行代码:
$(self.ddlOwner + "option[value='" + this.owner_USER_ID +"']").attr("selected", "selected");
然而,这行代码确实正确地设置了值,但它对页面上的所有 DDL 都这样做了。因此,如果该值为 1,我在整个页面上的所有四个 DDL 都将值设置为 1。
结束Edit2
我有一个自定义控件 DropDownList。
public class AssigneesDDL : System.Web.UI.WebControls.DropDownList
{
...
}
它在初始化时被填充。在服务器端,我会使用一个属性来设置它的值。
这个属性:
public string ValueID
{
get { return base.SelectedItem.Value; }
set
{
ListItem li = base.Items.FindByValue(value.ToString());
if (li != null)
{
li.Selected = true;
}
else
{
ListItem li2 = new ListItem("", "");
base.Items.Add(li2);
li2.Selected = true;
}
}
}
现在我需要从客户端选择值,我正尝试使用一些 JQuery 来这样做,但没有任何运气。
我捕获了值,但不知道如何设置它。我都试过了:
$(self.ddlOwner).val(this.owner_USER_ID);
和
$(self.ddlOwner + "option:selected").val(this.owner_USER_ID);
有人有什么想法吗?
编辑:
哦,我试过了:
$(self.ddlOwner + "option:selected").text(this.owner_USER_ID);
这实际上是用正确的值在 DDL 中添加了一个新行,但它也会将该值添加到我页面上的每个 DDL。这很奇怪。不太确定为什么会那样做。
Self.ddlOwner 是 ("#"+ ddl.clientID)。所以我在控件上有正确的句柄。
最佳答案
如果您有一个在服务器端填充的自定义控件,为什么要尝试在客户端设置值?设置 SelectedItem 或 SelectedIndex 属性应该就足够了,然后它就会正确呈现。
能否请您详细解释一下您的场景?
关于c# - 难以使用 JQuery 设置自定义 DDL 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329838/