event-handling 相关问题

事件处理是关于处理源与一个或多个订户之间的消息的编码样式。源中的点侦听器提供了一种方式,订阅代码可以使用从源引发的消息。

在 C++ Builder 中覆盖事件处理程序

在 Codegear C++ Builder 中,我尝试扩展 TMemo VCL 类以在 OnKeyDown 事件期间执行某些功能。我已经设置了该控件并能够将其添加到表单等中。

回答 2 投票 0

使用 Dagster 进行近实时应用程序

一直在尝试检查是否有人能够在实时流应用程序上使用 Dagster 编排。我已经能够使用批处理位来实现,但没有得到任何文档...

回答 1 投票 0

使用 JavaScript 为目标元素及其子元素实现背景颜色

我有一个 HTML 元素的层次结构,我希望当鼠标左键单击此层次结构中的某个元素时,只有该特定元素的背景颜色应该改变。我想...

回答 1 投票 0

为什么 mouseMoveEvent 在 PyQt5 中什么都不做

我尝试在PyQt5和Python3.5中使用mouseMoveEvent和mousePressEvent,但是当我点击鼠标时什么也没有。我的代码如下,有什么问题吗? 从 PyQt5 导入 QtWidgets,...

回答 2 投票 0

从 QGraphicsView 转到 QMainWindow 现在 keyPressEvent 没有看到箭头键

我正在尝试了解 PyQt4 中的事件处理,并偶然发现了一个案例 在我更改类定义后,keyPressEvent 会看到除箭头键之外的所有键。 从查看所有键: ...

回答 1 投票 0

由中继器生成的 ASP.NET DropDownList 在创建后未触发 OnSelectedIndexChanged

我正在处理一个棘手的错误。我在 .aspx 文件中使用 Repeater 创建了一个 ASP DropDownList: 我的页面.aspx 我正在处理一个棘手的错误。我在 .aspx 文件中使用 Repeater 创建了一个 ASP DropDownList: 我的页面.aspx <asp:Repeater ID="rptTemplateFields" runat="server" DataSource='<%# rptrDataSource %>' OnItemDataBound="rptTemplateFields_OnItemDataBound"> <ItemTemplate> <asp:DropDownList ID="ddlRepeater" runat="server" AppendDataBoundItems="true" AutoPostBack="True" OnSelectedIndexChanged="ddlRepeater_SelectedIndexChanged" width="360" Visible="False"> <asp:ListItem Text="" Value="" /> </asp:DropDownList> </ItemTemplate> </asp:Repeater> 我在代码隐藏中使用以下内容填充这些下拉菜单: mypage.aspx.cs protected void rptTemplateFields_OnItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { dynamic field = e.Item.DataItem; BugFieldName fieldName = field?.FieldName; string fieldContent = field?.FieldContent; var allowedValues = GenerateAllowedValues(fieldName); if (!fieldName.IsNullOrUnsetValue() && !allowedValues.IsNullOrEmpty()) { var ddl = e.Item.FindControl("ddlRepeater") as DropDownList; ddl.ID = "_ddlField" + fieldName; ddl.Attributes.Add("Name", "_ddlField" + fieldName); ddl.ClientIDMode = ClientIDMode.Static; ddl.DataSource = allowedValues; ddl.SelectedValue = allowedValues.Contains(fieldContent) ? fieldContent : null; ddl.Visible = true; ddl.DataBind(); } } } protected void ddlRepeater_SelectedIndexChanged(object sender, EventArgs e) { var ddlRepeater = sender as DropDownList; var state = (string)ViewState[ddlRepeater.Attributes["Name"]]; if (state != ddlRepeater.SelectedItem.Text) { ViewState[ddlRepeater.Attributes["Name"]] = ddlRepeater.SelectedItem.Text; } } 问题是我第一次单击下拉列表并更改项目(立即创建和数据绑定后),触发页面加载并擦除 ddl.SelectedValue 等状态,并且 DropDownList 的“OnSelectedIndexChanged”事件处理程序执行不火。 在此页面加载之后,DropDownList DO 中的后续更改会立即触发 OnSelectedIndexChanged 并保留列表的状态。我想象回发和数据绑定发生了一些奇怪的事情,但我不确定我哪里出了问题。 到目前为止,我已经尝试使用其他事件处理程序,但没有任何运气。我已经确认确实发生了页面加载并且它是回发。我将 <%@ Page ViewStateMode="Enabled" %> 添加到我的 aspx 文件中。我还尝试在中继器上使用 ItemCommand 监听器。这也没有火。 好的,这个问题看起来是您在标记中设置了中继器的数据源。因此,对于任何回发,您的重新加载和重新绑定代码都会再次运行,这会导致您所做的任何选择丢失(重新绑定会一次又一次地重新运行行数据绑定代码)。因此,您所做的任何更改都会因回发而丢失。 简单的解决方案是将数据绑定到后面代码中的中继器,并且仅一次。 因此,说出这个简单的标记: <div style="float: left; width: 30%"> <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate> <h4>Booking Infomration</h4> <asp:Label ID="lblPerson" runat="server" Width="200px" Text='<%# Eval("FirstName") + " " + Eval("LastName") %>'> </asp:Label> <asp:Label ID="Label1" runat="server" Text="Hotel:" Style="margin-left: 30px"> </asp:Label> <asp:DropDownList ID="cboHotel" runat="server" DataValueField="ID" DataTextField="HotelName" AutoPostBack="true" OnSelectedIndexChanged="cboHotel_SelectedIndexChanged"> </asp:DropDownList> <br /> <hr style="height: 2px; border: none; background-color: black" /> </ItemTemplate> </asp:Repeater> </div> <div style="float: left; margin-left: 30px"> <h3>Combo box selected row information</h3> <asp:TextBox ID="txtInfo" runat="server" TextMode="MultiLine" Height="160px" Width="350px"></asp:TextBox> </div> 我们的代码在后面,请注意我们如何确保仅在第一页加载时绑定数据(IsPostBack = false)。 因此这段代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) LoadData(); } void LoadData() { string strSQL = @"SELECT ID, HotelName FROM tblHotels ORDER BY HotelName"; rstHotels = General.MyRst(strSQL); strSQL = "SELECT * FROM People ORDER BY FirstName"; Repeater1.DataSource = General.MyRst(strSQL); Repeater1.DataBind(); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DropDownList cboHotel = (DropDownList)e.Item.FindControl("cboHotel"); cboHotel.DataSource = rstHotels; cboHotel.DataBind(); cboHotel.Items.Insert(0, new ListItem("Please select", "0")); DataRowView rowData = (DataRowView)e.Item.DataItem; // current binding row data if (rowData["Hotel_id"] != DBNull.Value) cboHotel.SelectedValue = rowData["Hotel_id"].ToString(); } } protected void cboHotel_SelectedIndexChanged(object sender, EventArgs e) { DropDownList cboHotel = (DropDownList)sender; RepeaterItem rptRow = (RepeaterItem)cboHotel.NamingContainer; string sInfo = ""; sInfo += $"Row index selected = {rptRow.ItemIndex}\n"; Label lblPerson = (Label)rptRow.FindControl("lblPerson"); sInfo += $"Row person information = {lblPerson.Text}\n"; sInfo += $"combo Hotel id = {cboHotel.SelectedItem.Value}\n"; sInfo += $"combo Hotel Name (text) = {cboHotel.SelectedItem.Text}\n"; txtInfo.Text = sInfo; } 现在的结果是这样的: 因此,通常可以在标记中放置一些数据源,但是一旦您有了回发和附加代码逻辑,那么我建议您通过使用后面的代码来“控制”数据绑定,而不是离开重新绑定可能会或可能不会再次发生。

回答 1 投票 0

wxObjectEventFuntion 与 wxCommandEvent

为什么wxsmith将wxObjectEventFunction绑定到连接分配中,并将wxCommandEvent绑定到实现函数中? IE。进入 OnButtonClick 并且编译器发出警告: C:..\Main.cp...

回答 1 投票 0

在 svelte 中对多个子组件列表实现事件处理的最佳方法是什么?

假设我有一个待办事项清单。每个列表项都有一个删除按钮,如果单击该按钮将从列表数组中删除该项目。现在我们就可以使用这些方法了。 1. //store.ts 导出类型项目 = { 文字:

回答 1 投票 0

承诺和执行顺序

我对以下代码的执行顺序感到困惑(在jsfiddle上运行): 让数字= 10; window.addEventListener("未处理的拒绝", (事件) => { 数量 = 20 }); 让我们承诺=...

回答 1 投票 0

同一元素上的 JavaScript DOM 事件处理程序是否按注册顺序调用相同的事件和阶段?

如果我将多个事件处理程序附加到单个 DOM 元素上的单个事件,是否保证事件处理程序按照它们添加的顺序被调用?或者我不应该依赖这种行为?

回答 1 投票 0

JavaScript DOM 中事件目标的父链中事件监听器的顺序是如何确定的?

假设有一个 div 包含一个链接(a href),并且有三个事件侦听器 - 单击时 - 1)整个页面,2)div 3)标签。如果用户点击a标签,列表如何...

回答 1 投票 0

JavaScript DOM 事件处理程序是否按照注册顺序调用?

如果我将多个事件处理程序附加到单个 DOM 元素上的单个事件,是否可以保证事件处理程序按照添加顺序进行调用?或者我不应该依赖这种行为?

回答 1 投票 0

如何使用不断变化的 JavaScript 变量的值动态更新跨度?

我正在开发一个 Javascript 项目,其中我有一个变量“completedTasks”,它会由于许多事件而动态变化。该变量表示已完成任务的计数。我想显示...

回答 2 投票 0

如何在javascript中检测变量的变化?

有没有关于如何触发/检测 javascript 变量的更改的想法? 邮件的目标是在每次更改时显示跨度中变量的新值。 我在网上搜了一下...

回答 1 投票 0

如何使用 jQuery 创建带标题的图像链接搜索脚本

一次输入30个字符。让我知道这是否有效。

回答 1 投票 0

从另一个表单访问 DataModule 上的事件

在 Delphi 2009 中,我有一个带有过程 MyProcedure 的表单,该过程写入表单上的标签。该表单使用带有 ClientDataSet 的 DataModule。当 ClientDataSet 的 AfterScroll 事件被触发时

回答 3 投票 0

如何从QT的事件循环处理中排除一组事件?

我需要能够排除事件循环处理的一组事件;我知道有一些标志可以传递给 processEvents 方法(例如 QEventLoop::ExcludeUserInputEvents,

回答 2 投票 0

在wx中自动调整表格大小

当使用wx.grid通过wxpython创建表格时,一旦用户调整框架大小,如何自动扩展表格中的行数和列数? 如果我创建 5*5 表格(网格)来适应...

回答 2 投票 0

如何根据项目的 ID 为循环中的每个项目添加唯一的函数?

我有一些 html 元素,每个元素中都嵌套了另一个 。嵌套元素负责 CSS,外部元素负责 JavaScript。 ( 我有一些 html <div> 元素,每个元素中都嵌套有另一个 <div> 。嵌套元素负责 CSS,外部元素负责 JavaScript。 (外部 <div> 元素是必要的,因为如果嵌套元素负责检测点击,则其命中框中会有孔。) 无论如何,为了帮助我解释,这是我的代码: window.onload = function() { const buttons = document.getElementsByClassName('icon-wrapper'); [...buttons].forEach(button => button.addEventListener('click', function() { var target = this.children[0] target.classList.toggle('toggled') console.log(target) // code dependant on the value of this })) }; /* css for each button has been removed because I don't want to release them yet...*/ body { margin: 5%; display: flex; -moz-column-gap: 5%; column-gap: 5%; row-gap: 5%; } .icon-wrapper { height: 8vmin; width: 8vmin; position: relative; display: flex; cursor: pointer; /* extra code for visablility */ background-color: black; } <div class="icon-wrapper"> <div id="menu-icon"></div> </div> <div class="icon-wrapper"> <div id="full-screen-icon"></div> </div> <div class="icon-wrapper"> <div id="tab-icon"></div> </div> <div class="icon-wrapper"> <div id="volume-icon"></div> </div> <iframe class="windowed" id="iframe" frameborder="0" allowtransparency="true" src="https://www.heavensgate.com/"> </iframe> 现在来看看实际细节!正如您所看到的,每个按钮都有独特的功能。我的问题是,我无法根据每个事件监听器的目标元素为其分配唯一的函数。例如,当单击包含全屏按钮 <div> 的第二个图标包装时,<iframe> 元素将请求全屏。但是,当单击第三个按钮时,<iframe> 将在新选项卡中打开。基本上,我希望 forEach 循环的每次迭代都有不同的功能。最后,如果可能的话,我还希望 unique 函数基于嵌套元素的 Id,而不是循环/数组的索引,这样我就可以在不破坏元素的情况下对元素进行重新排序。 我希望我在这篇文章中明白了要点,但如果您需要我详细说明任何内容,请询问。 编辑:除非他们发布独立的答案,否则请检查评论以了解 Barmar 所说的内容,这似乎就是我所追求的。 发布我在@Barmar 的评论中得到的答案 “您可以使用 switch 语句:switch(target.id)” 您可以使用一个对象将每个 id 与单击时执行的函数关联起来(Barmar 也提到过)。 还要注意,如果使用document.querySelectorAll,则可以直接调用forEach,而无需先将结果转换为数组。 const fns = { "menu-icon"() { console.log('menu icon clicked'); }, "full-screen-icon"() { console.log('full screen icon clicked'); } // ... } document.querySelectorAll('.icon-wrapper').forEach(wrapper => wrapper.addEventListener('click', fns[wrapper.firstElementChild.id]));

回答 2 投票 0

JAVA:按下按钮时在边框窗格中移动对象

我正在做一项家庭作业,我需要在窗格中创建一个圆圈并使用屏幕底部的按钮移动它。我能够让圆圈和按钮出现在窗格中,...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.