0

我正在尝试做的是让我的下拉列表之一在另一个下拉列表中的选定项目发生变化时更改其内容。我的 aspx 文件中有这段代码:

function ModifyDDLItems(id1, id2) 
{
    var ddlcontrolShown = document.getElementById(id1);
    var ddlcontrolHidden = document.getElementById(id2);

    if (ddlcontrolShown.options[ddlcontrolShown.selectedIndex].value == "DD1") 
    {
        //Get number of items of hidden ddl
        var length = ddlcontrolHidden.options.length;

        //Clear items of shown ddl
        ddlcontrolShown.options.length = 0;

        //Add itmems of hidden ddl to shown ddl
        for (i = 0; i < length; i++) 
        {
            ddlcontrolShown.options.add
            var newoption = document.createElement("option")
            newoption.text = ddlcontrolHidden.options[i].text;
            newoption.value = ddlcontrolHidden.options[i].text.value;
        }         
    }   
}

现在,我通过这个给它前端 ID:

protected void SetDD1ConfItems(GridViewRow gvRow, DataSet BaseConfItems)
{
    DataView dvConfType = new DataView(BaseConfItems.Tables[0]);
    DataSet dsTemp = BaseConfItems.Clone();

    DropDownList ddlConfType2 = (DropDownList)form1.FindControl("ddlConfType2");
    DropDownList ddlBA = (DropDownList)gvRow.FindControl("ddlBA");
    DropDownList ddlConfType = (DropDownList)gvRow.FindControl("ddlConfType");

    dvConfType.RowFilter = "ref_code = 'FAX' or ref_code = 'EEX' or ref_code = 'EPD'";

    dsTemp.Tables.Clear();
    dsTemp.Tables.Add(dvConfType.ToTable());

    ddlConfType2.DataSource = dsTemp;
    ddlConfType2.DataBind();
    //ddlBA.Attributes["onchange"] = "function GetDDLD(" + ddlConfType.ClientID + ", " + ddlConfType2.ClientID + ") {ModifyDDLItems(id1, id2);}";
    ddlBA.Attributes.Add("onchange", "ModifyDDLItems('" + ddlConfType.ClientID + "', '" + ddlConfType2.ClientID + "')");
}

当我运行它时,VS 一直告诉我 id1 和 id2 都是空的,似乎 id 没有正确传递给客户端。

4

1 回答 1

0

我认为您的代码错误,我一眼发现的第一个错误是,

您无法通过使用在 gridview 中找到控件

gvRow.FindControl("ddlBA");

GridView 中可能有多行,因此您必须在每一行中找到您的控件,因为它们都有不同的 ClientID。首先尝试替换以下代码

gvRow.Rows[RowIndex].FindControl("ControlID");

此外,它应该写在某种循环中,以便找到 Grid 的 RowIndex 值。

简要描述您的确切要求。因此,我可以帮助您编写正确的代码。

于 2013-05-10T04:10:23.300 回答