EDIT2:
我尝试了一些新的东西,我添加了这行代码:
$(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
{
...
}
它会被填充onInit。从服务器端,我将使用属性来设置其值。
这个属性:
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)。所以我在控件上有正确的句柄。
答案 0 :(得分:0)
如果您在服务器端填充了自定义控件,为什么要尝试在客户端设置值?它应该足以设置SelectedItem或SelectedIndex属性,然后它将被正确呈现。
你能更好地解释一下你的情景吗?
答案 1 :(得分:0)
显然问题是我使用的是网页控制。一个ascx。当我移动到外部控件时,.val()方法工作正常。
不确定为什么它不能用于ascx web控件的DDL。