2

我目前正在评估 Telerik 的一些 RAD 控件,现在我正在试验 RadGrid。

所以我有我的网格控件并启用了客户端绑定以支持 Ajax。我创建了一个适当的 WCF Web 服务来获取数据等。一切都很好,包括分页等。现在我想要一个按钮列来删除一些项目。我注册了网格的 OnItemCommand 事件并在服务器端相应地实现了它。我的 ASPx 代码如下所示:

<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,但这会导致每次点击一行时都会回发,这并不是真正需要的。

有没有更好的方法来实现这一点,或者有人暗示可能是什么问题?

谢谢

4

5 回答 5

2

鉴于Telerik 论坛的回答,这似乎是不可能的。

于 2009-10-12T14:40:58.047 回答
2

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

唯一的另一种方法是从按钮本身处理客户端“onclicking”事件。

绑定到 OnCommand 和 Row DataBound 的示例:
<ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> 然后在您的 javascript 中包装在 rad 代码块中,具有以下方法:

<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
    // ... //
 }

`

于 2011-04-08T12:51:12.293 回答
1

我意识到这是古老的,但它仍然显示在谷歌搜索结果中。现在有一个解决方案,也许还有其他......

您可以使用模板列实现回发

<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”属性。

于 2013-08-30T17:35:28.023 回答
0

我对 Telerik 控件也有同样的问题。我通过使用新名称从零重新创建控件,然后重建我的结构来解决了这个问题。

希望能帮助到你

于 2011-01-19T17:11:57.207 回答
0

RegisterWithScriptManager="false" 这也可以工作..

于 2014-02-15T07:00:31.710 回答