代码之家  ›  专栏  ›  技术社区  ›  Collin Estes

难以使用jquery设置自定义DDL的值

  •  2
  • Collin Estes  · 技术社区  · 14 年前

    编辑2:

    我尝试了一些新的东西,我添加了这行代码:

    $(self.ddlOwner + "option[value='" + this.owner_USER_ID +"']").attr("selected", "selected");
    

    然而,这一行代码确实正确地设置了值,但它在页面上的所有DDL上都是这样。因此,如果值为1,那么我在整个页面上拥有的所有四个DDL都将值设置为1。

    结束编辑2

    我有一个自定义控件下拉列表。

    public class AssigneesDDL : System.Web.UI.WebControls.DropDownList
        {
        ...
        }
    

    它在IT上被填充。从服务器端,我将使用一个属性来设置它的值。

    此属性:

     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 回复  |  直到 14 年前
        1
  •  0
  •   codemonkeh    14 年前

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

    你能详细解释一下你的情况吗?

        2
  •  0
  •   Collin Estes    14 年前

    显然问题是我使用的是Web控件。ASCX当我移动到外部控件时,.val()方法工作得很好。

    不知道为什么它不能与来自ascx web控件的DDL一起工作。