【问题标题】:How to get values from the currently selected row within a Ext.Net.GridPanel outside of the SelectionModel?如何从 SelectionModel 之外的 Ext.Net.GridPanel 中的当前选定行中获取值?
【发布时间】:2011-12-16 07:34:51
【问题描述】:

我的 .aspx 文件中有以下代码

<ext:GridPanel
            runat="server"
            ID="GridPanel1"
            Height="450"
            Title="EmployeeList"
            Width = "850"
            Header = "false"
            StyleSpec = "margin: 25px;"
            StripeRows="true"
            TrackMouseOver="true"
            Border="true" ClicksToEdit="2">
            <Store>
                <ext:Store ID="Store1" runat="server" DataSourceID="LinqDataSource1">
                    <Reader>
                        <ext:JsonReader IDProperty="id" >
                            <Fields>
                                <ext:RecordField Name="id" />
                                <ext:RecordField Name="shortcode" />
                                <ext:RecordField Name="lastname" />
                                <ext:RecordField Name="firstname" />
                                <ext:RecordField Name="roomnumber" />
                                <ext:RecordField Name="landline" />
                                <ext:RecordField Name="mobile" />
                                <ext:RecordField Name="mail" />
                                <ext:RecordField Name="position" />
                                <ext:RecordField Name="department" />
                            </Fields>
                        </ext:JsonReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel ID="ColumnModel1" runat="server" >
                <Columns>
                    <ext:Column DataIndex="id" Header="Index" Width="50"/>
                    <ext:Column DataIndex="shortcode" Header="Kuerzel" Align="Center" />
                    <ext:Column DataIndex="lastname" Header="Nachname"   />
                    <ext:Column DataIndex="firstname" Header="Vorname"  />
                    <ext:Column DataIndex="roomnumber" Header="Raumnummer" Align="Center" Width="50"/>
                    <ext:Column DataIndex="landline" Header="Durchwahl intern" Align="Center" Width="50"/>
                    <ext:Column DataIndex="mobile" Header="Durchwahl handy"  Align="Center" Width="50"/>
                    <ext:Column DataIndex="mail" Header="Mail"  />
                    <ext:Column DataIndex="position" Header="Funktion"  />
                    <ext:Column DataIndex="department" Header="Abteilung"  />
                </Columns>
            </ColumnModel>  
            <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" SingleSelect="true">

<%--                   <Listeners> 
                        <RowSelect Handler="#{EditPanel}.getForm().loadRecord(record);" /> 
                    </Listeners>--%>

                    <DirectEvents>
                        <RowSelect OnEvent="SaveCurrentSelection">
                            <ExtraParams>
                                <ext:Parameter Name="usID" Value="this.getSelected().id" Mode="Raw" />
                            </ExtraParams>
                        </RowSelect>
                    </DirectEvents>
                </ext:RowSelectionModel> 
            </SelectionModel>   
        <KeyMap>
            <ext:KeyBinding Ctrl="true">
                <Keys>
                    <ext:Key Code="Y" />
                </Keys>
                <Listeners>
                    <Event Handler="#{DirectMethods}.ShowSearchWindow();" />
                </Listeners>
            </ext:KeyBinding>
        </KeyMap>
        <DirectEvents>
            <RowDblClick OnEvent="SwitchToUserDetail">
                <ExtraParams>
                    <ext:Parameter Name="id" Value="this.selModel.getSelected().id" Mode="Raw"></ext:Parameter>
                </ExtraParams>
            </RowDblClick>
        </DirectEvents>     

        </ext:GridPanel>

现在我需要获取当前选定行的 id 字段,就像我在 RowSelect Listener 中获取它的方式一样

<ext:Parameter Name="usID" Value="this.getSelected().id" Mode="Raw" />

但这一次不在 SelectionModel 内。我需要在这里拿到它:

<DirectEvents>
  <RowDblClick OnEvent="SwitchToUserDetail">
    <ExtraParams>
        <ext:Parameter Name="id" Value="this.selModel.getSelected().id" Mode="Raw"></ext:Parameter>
    </ExtraParams>
  </RowDblClick>
 </DirectEvents>

在 SelectionModel 之外但在 GridPanel 内。

我认为方法是在这里得到它:

Value = "this.selModel.getSelected().id"

我需要在这里获取它,因为我不想在 CodeBehind 中执行此操作,并且 Listener 和 DirectEvent 在我的 SelectionModel 中不能一起工作

我们将不胜感激

【问题讨论】:

  • 您可以像 this.selModel.getSelected().data.shortcode 一样访问记录字段。
  • 你成就了我的一天!它有效:-) 我很沮丧,但现在它有效!太棒了

标签: c# extjs code-behind ext.net


【解决方案1】:

您可以像这样访问记录字段

this.selModel.getSelected().data.shortcode

【讨论】:

    【解决方案2】:

    不幸的是,这对我不起作用:

    App.GridPanel1.getSelectionModel().getSelected().data.Id

    但是这个:

    App.GridPanel1.getSelectionModel().getSelected().items[0].data.Id

    【讨论】:

      【解决方案3】:

      这在 Ext.NET 的更高版本中有所改变。要获取行的 IDProperty,请注意“getSelected()”现在是“getSelection()”,并且该函数返回一个选定对象的数组:

            <SelectionModel>
                 <ext:RowSelectionModel runat="server">
                     <Listeners>
                         <Select Handler="#{GridPanel1}.selModel.getSelection()[0].internalId" />
                     </Listeners>
      
                 </ext:RowSelectionModel>
             </SelectionModel>  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-10
        • 1970-01-01
        • 2016-09-20
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多