网页上的多次用户控制:
我有一个带有网格和列表框的用户控件 网格设置为auto create column = True 我将查询传递给控件并在Page_Load事件中填充网格 用户双击网格上的行进行选择 添加这些行以列出框(列1作为值,列2作为显示) 如果用户双击列表框上的行 - 它将从选择中删除 Plus系统会忽略网格行(如果它已存在于列表框中)
到目前为止一切都那么好,它完美无缺!
扭: 如果页面上有一个onyl控件 - 一切都很好 但是如果控件在网页上多次出现 - 它无法正常工作
错误是'因为每个用户控件都要复制相同的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 />
答案 0 :(得分:0)
由于您已经在使用用户控件,请尝试使用Page.RegisterClientScriptBlock(通过键)在代码隐藏中加载JavaScript代码,并检查是否已使用IsClientScriptBlockRegistered加载了JS。这样做是非常有效的,应该可以工作,因为你只是一次声明一个函数而不是n次(这可能就是它在客户端抛出错误的原因)。
http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock(v=vs.71).aspx