【问题标题】:How to get DataGrid SelectionChanged trigger source component?如何获取 DataGrid SelectionChanged 触发源组件?
【发布时间】:2013-06-21 09:24:02
【问题描述】:

我有一个绑定到一个对象的 ComboBox,该对象也绑定到一个 DataGrid。当我更改 ComboBox 选择或 DataGrid 中的 SelectedItem 时,将触发 ComboBox 处的事件 SelectedChanged。

有没有办法知道哪个组件(DataGrid 或 ComboBox)触发了事件?

【问题讨论】:

  • 事件有一个 sender 和一个 e 与之关联。 sender 将告诉您谁调用了该事件。
  • 我也尝试过使用发件人,但发件人类型始终是 ComboBox。不知道为什么。而且我还尝试使用 DataGrid SelectionChanged 事件来设置要在 ComboBox SelectionChanged 事件中处理的标志,但是 DataGrid SelectionChanged 是在 ComboBox SelectionChanged 之后触发的。

标签: c# .net datagrid combobox selectionchanged


【解决方案1】:

为了让 ComboBox 回发,我想它设置为 AutoPostBack?如果这完全影响了 GridView 上的数据,那么所有事件都会触发。当触发完整回发时(例如将 ComboBox 设置为 AutoPostBack=true),每个包含新数据的事件都会被触发。

您应该查看控件生命周期: http://msdn.microsoft.com/en-us/library/aa719775(v=vs.71).aspx(这只是 msdn 文档,不是很好,但它是一个很好的起点)。

...您还应该尝试在您的问题中发布一些代码:) 您在做什么有点模棱两可。它们都绑定到什么对象?还是同一个数据集同时绑定到 GridView 和 ComboBox?

编辑:这篇文章可能会有所帮助:Two types of postback events

【讨论】:

    【解决方案2】:

    如果我是你,我会将断点放置在 SelectedItem 或 SelectedChanged 断点处,并尝试在调试模式下运行解决方案并查看第一个断点被击中的位置;) Callstack 也会为您提供帮助。

    【讨论】:

      【解决方案3】:

      假设您将它们都连接到对象数据源。您可以为使用相同 SelectMethod 的下拉菜单创建单独的数据源。这样,它们在回发后都会使用相同的数据进行更新。

      否则为下拉的onchange事件使用javascript并设置一个隐藏字段是否已更改。然后检查该值以查看它是否来自下拉列表。

      <asp:DropDownList runat="server" ID="drpOption"onchange="javascript:OptionChanged();"></asp:DropDownList>
      
      function OptionChanged() {
          $('#hdnField').val = 'true';
      
          return false;
      }
      

      【讨论】:

        【解决方案4】:

        U 可以使 DAtaGRid 和 Combobox 的选择更改事件并通过应用 BreakPoint 来检查哪个部分首先执行..!!

        【讨论】:

          猜你喜欢
          • 2011-07-24
          • 2011-04-15
          • 1970-01-01
          • 2013-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-14
          • 1970-01-01
          相关资源
          最近更新 更多