使用JQuery设置自定义DDL的值很困难

时间:2010-02-24 21:49:17

标签: c# asp.net jquery

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)。所以我在控件上有正确的句柄。

2 个答案:

答案 0 :(得分:0)

如果您在服务器端填充了自定义控件,为什么要尝试在客户端设置值?它应该足以设置SelectedItem或SelectedIndex属性,然后它将被正确呈现。

你能更好地解释一下你的情景吗?

答案 1 :(得分:0)

显然问题是我使用的是网页控制。一个ascx。当我移动到外部控件时,.val()方法工作正常。

不确定为什么它不能用于ascx web控件的DDL。