代码之家  ›  专栏  ›  技术社区  ›  Juri

RadGrid未在ItemCommand事件上触发回发

  •  2
  • Juri  · 技术社区  · 15 年前

    我目前正在评估Telerik的一些RAD控制,就在此时,我正在试验RadGrid。

    <telerik:RadGrid runat="server" ID="RadGrid1" AllowPaging="True" AllowSorting="True"
        AutoGenerateColumns="False" GridLines="None"
        OnItemCommand="RadGrid1_ItemCommand">
        <MasterTableView DataKeyNames="Id" ClientDataKeyNames="Id">
            <Columns>
                <telerik:GridBoundColumn DataField="Firstname" HeaderText="Firstname" DataType="System.String">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Lastname" HeaderText="Lastname" DataType="System.String">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="Age" HeaderText="Age" DataType="System.Int32">
                </telerik:GridBoundColumn>
                <telerik:GridButtonColumn CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"
                    ButtonType="ImageButton">
                </telerik:GridButtonColumn>
            </Columns>
            <PagerStyle Mode="Slider" />
        </MasterTableView>
        <ClientSettings>
            <DataBinding SelectMethod="GetSampleData" Location="Webservice/GridData.svc" SortParameterType="String">
            </DataBinding>
        </ClientSettings>
    </telerik:RadGrid>
    

    EnablePostBackOnRowClick=true “添加到ClientSettings,但这会导致在每一行上单击时进行回发,这并不是真正需要的。

    5 回复  |  直到 15 年前
        1
  •  2
  •   Juri    15 年前

    鉴于答案,这似乎是不可能的 from the Telerik forum

        2
  •  2
  •   Andy    14 年前

    您需要处理客户机“OnCommand”事件,或者更恰当地使用客户机“RowDataBound”命令。在RowDataBound命令中,您可以找到rad按钮并向其附加事件。

    唯一的其他方法是从按钮本身处理客户机“onclick”事件。

    绑定到OnCommand和行数据绑定的示例:
    <ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> 然后,在封装在rad代码块中的javascript中有以下方法:

    <script type="javascript">
    function Grid_RowDataBound(sender, args) {
        var item = args.get_item();
        var data = args.get_dataItem();
        var btn = $find('DeleteColumn');
        btn.add_clicking(delegate); // where delegate is the function you provide for the click
        // ... //
     }
    

    `

        3
  •  1
  •   Joe Hakooz    11 年前

    我意识到这很古老,但它仍然在谷歌搜索结果中显示得很高。 现在有了一个解决方案,也许其他人也有。。。

    可以使用模板列实现回发

    <telerik:GridTemplateColumn UniqueName="myuniquename">
    <ItemTemplate>
        <telerik:RadButton ID="RadButton1" runat="server" ButtonType="StandardButton" AutoPostBack="true" CommandName="MyCommand" UseSubmitBehavior="false" Text="Button Text" />
    </ItemTemplate>
    </telerik:GridTemplateColumn>
    

    虽然我不确定您是否需要“UseSubmitBehavior”属性。

        4
  •  0
  •   Raph K    14 年前

    我的telerik控制系统也有同样的问题。我用一个新名称从零开始重新创建控件,然后重建我的结构,从而解决了这个问题。

    希望能有帮助

        5
  •  0
  •   Tirtha    11 年前

    RegisterWithScriptManager=“false”这可能也适用。。

    推荐文章