2

我有一个网格视图,其中包含一个下拉列表和一个面板,我希望通过下拉列表的选定值使其不可见和可见。

不与gridview一起使用时有效的javascript代码是:

   function showPannel(panelId,dropdownId ) {
        var panel = document.getElementById(panelId);
        var dropDown = document.getElementById(dropdownId);
        if (dropDown.options[dropDown.selectedIndex].value = 'Diesel Deals') {
             panel.className = "visibleDiv";

       }
        else{
            panel.className = "hiddenDiv";
            }

    }

我从这里传递 panelId 和 dropdownlist id:

    if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Panel p = (Panel)e.Row.FindControl("Panel1");
            DropDownList t1 = (DropDownList)e.Row.FindControl("DropDownList1");
            t1.Attributes.Add("onchange",
                 string.Format("javascript:showPannel('{0}', '{1}')",p.ClientID, t1.ClientID ));
        }

但它不工作。该函数被调用,但是当 dropDown.options[dropDown.selectedIndex].value 被警告时它给出未定义。

我试着做

                    Gridview1 = document.getElementById('<%=GridView1.ClientID%>');
             var cell = Gridview1.rows[0].cells[2];
             var dropdownlist = cell.childNodes[0];
             var dropdownSelectedValue = dropdownlist.options[dropdownlist.selectedIndex].value;
             alert(dropdownSelectedValue); 

但它也不起作用。

请帮忙

谢谢

4

1 回答 1

0
            Panel p = (Panel)e.Row.FindControl("Panel1");
            DropDownList t1 = (DropDownList)e.Row.FindControl("DropDownList1");
            string p_id = GridView1.ClientID + "_" + p.ClientID;
            string ddL_id = GridView1.ClientID + "_" + t1.ClientID;
            t1.Attributes.Add("onchange",
                 string.Format("javascript:showPannel('{0}', '{1}')", p_id, ddL_id ));

感谢有关渲染 id 的提示

于 2013-02-24T11:24:55.357 回答