0

我有一个带有下拉菜单的用户控件,并且在用户控件旁边有一个链接,该链接根据下拉菜单的值打开弹出窗口

我有一个页面,我使用不同的 ID 两次引用了用户控件。但是我的问题是当我单击页面上的单个链接时,由于链接在用户控件本身以及下拉列表的值上,我选择的下拉列表的值$find('<%=RadComboBox1.ClientID%>').get_value(); 对于两种情况都是相同的,或者从最后一个元素中找到

因为 RadComboBox1 的 ID 与页面无关,而现在与用户控件相关,因此它将具有相同的 ID 并且将为两个弹出链接获得相同的值

如何使链接正常工作?

用户控制

<script type="text/javascript">
function openPopUp() {
        var ddlValue = $find('<%=RadComboBox1.ClientID%>').get_value();

        if (ddlValue.length <= 0) {
            alert('Please Select a Vendor');
        }
        else {
            var jsURL = "/Open.aspx?id=" + ddlValue;
            return OpenPOPWindow(jsURL, 550, 1250, 340, 160);
        }
    }
</script>

<telerik:RadComboBox runat="server" ID="RadComboBox1" Height="190px" OnClientSelectedIndexChanged="javascript:openPopUp();" >
<a runat="server" id="lnkPopUp" visible="false"  href="javascript:void(0);">View Data</a>
4

1 回答 1

0

你确定它得到相同的ID?因为不应该。

为什么不更新到

javascript:openPopUp(this);

或从代码隐藏添加:

RadComboBox1.OnClientSelectedIndexChanged = "openPopUp('" + RadComboBox1.ClientID + "')";

这意味着 openPopUp 将始终正确引用您当前的组合框(第一个示例)或组合框 ID(第二个示例)。

后期编辑:

我刚刚做了一些测试。

首先,我使用以下代码创建了一个用户控件:

Options here: 
<asp:DropDownList runat="server" ID="ddlOptions">
    <asp:ListItem Text="option 1"></asp:ListItem>
    <asp:ListItem Text="option 2"></asp:ListItem>
    <asp:ListItem Text="option 3"></asp:ListItem>
</asp:DropDownList> 
<a href="javascript:linkit('<%=ddlOptions.ClientID%>')">Link here</a>

然后我创建了一个页面:

    <uc1:test runat="server" ID="test1" /><br />
    <uc1:test runat="server" ID="test2" />

    <script language="javascript" type="text/javascript">
        function linkit(id)
        {
            alert(document.getElementById(id).value);
        }
    </script>

其中 uc1:test 是前面描述的控件。

如果我在下拉列表中选择不同的选项并单击链接,我会得到正确的选择选项(每个链接都不同)。

这不是你遇到的同样的问题吗?

于 2013-06-21T02:56:08.883 回答