1

用户在网页上多次控制:

我有一个带有网格的用户控件和一个列表框网格设置为自动创建列 = True 我将查询传递给控件并在 Page_Load 事件中填充网格用户双击网格上的行以选择这些行已添加到列表中框(第 1 列作为值,第 2 列作为显示)如果用户双击列表框中的行 - 它从选择中删除如果网格行已经存在于列表框中,则系统会忽略它

到目前为止一切顺利,并且运行良好!

扭曲:如果页面上只有一个控件-一切都很好但是如果该控件在网页上多次出现-它无法按预期工作

错误是'因为每个用户控件都复制了相同的 java 脚本,所以只有最后一个在工作

下面是代码...帮助!

    <script type="text/javascript">

    function list_DblClick(s, e) {
        s.RemoveItem(s.GetSelectedIndex())
    }


    function grid_DblClick(s, e) {
        var sfn = s.GetColumn(0).fieldName + ';' + s.GetColumn(1).fieldName
        s.GetRowValues(s.GetFocusedRowIndex(), sfn, OnGetRowValues);
    }

    //check for duplicate and add new
    function OnGetRowValues(values) {
        var sFound = "False"
        for (var i = 0; i < selList.GetItemCount(); i++) {
            if (values[0] == selList.GetItem(i).value) {
                sFound = "True"
            }
        };
        if (sFound == "False") {
            selList.AddItem(values[1], values[0])
        };
    }
</script>


<br />
<br />
    <dx:ASPxGridView ID="grdSelection" ClientInstanceName="grid" runat="server" Width="100%">
        <ClientSideEvents RowDblClick="grid_DblClick" />
        <SettingsBehavior AllowFocusedRow="True" />
    </dx:ASPxGridView>
<br />
<br />
    <dx:ASPxListBox ID="listSelected" ClientInstanceName="selList" runat="server" Height="250px" Width="100%" >
     <ClientSideEvents ItemDoubleClick="list_DblClick" />
    </dx:ASPxListBox>
<br />
<br />
4

1 回答 1

0

由于您已经在使用用户控件,请尝试使用 Page.RegisterClientScriptBlock(通过键)在代码隐藏中加载 JavaScript 代码,并检查是否已经使用 IsClientScriptBlockRegistered加载了该 JS 。这样做效率更高并且应该可以工作,因为您只声明一个函数一次而不是 n 次(这可能是它在客户端引发错误的原因)。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock(v=vs.71).aspx

于 2012-11-12T21:29:37.787 回答