我目前正在评估来自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,但这会导致对每行上的每次点击进行回发,这不是真正需要的。
有没有更好的方法来实现这一点,或者是否有人提示可能是什么问题?
THX
答案 0 :(得分:2)
根据答案from the Telerik forum,这似乎是不可能的。
答案 1 :(得分:2)
您需要处理客户端“OnCommand”事件,或者更恰当地使用客户端“RowDataBound”命令。在RowDataBound命令中,您可以找到您的rad按钮并将事件附加到它。
执行此操作的唯一方法是从按钮本身处理客户端“onclicking”事件。
绑定到OnCommand和Row DataBound的示例:
<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
// ... //
}
`
答案 2 :(得分:1)
我意识到这很古老,但它仍然在Google搜索结果中显示出来。 现在有一个解决方案,也许还有其他人......
您可以使用模板列
来实现回发<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”属性。
答案 3 :(得分:0)
我对telerik控件有同样的问题。我通过使用新名称从零重新创建Control,然后重建我的结构来解决这个问题。
希望有所帮助
答案 4 :(得分:0)
RegisterWithScriptManager =“false”这可能也有效..