RadGrid 不会在 ItemCommand 事件上触发回发
我目前正在评估 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,但这会导致每次单击一行时都会发生回发,这并不是真正需要的。
有没有更好的方法来实现这一点,或者有人暗示可能是什么问题?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
就答案而言,这似乎是不可能的 来自 Telerik 论坛。
As far as it seems this is not possible given the answer from the Telerik forum.
您需要处理客户端“OnCommand”事件,或者更合适地使用客户端“RowDataBound”命令。在 RowDataBound 命令中,您可以找到 rad 按钮并向其附加一个事件。
执行此操作的唯一其他方法是从按钮本身处理客户端“onclicking”事件。
绑定到 OnCommand 和 Row DataBound 的示例:
<客户端设置>
然后在你的 rad 代码块中包含以下方法:
`
you need to handle the client "OnCommand" event, or more appropriately use the client "RowDataBound" command. In the RowDataBound command you can find your rad button and attach an event to it.
The only other way to do this is to handle the client "onclicking" event from the button itself.
Example of binding to the OnCommand and Row DataBound:
<ClientSettings>
<ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" />
</ClientSettings>
then in your javascript wrapped in a rad code block have the following methods:
`
我意识到这已经很古老了,但它仍然在谷歌结果中显示很高。
现在有一个解决方案,也许还有其他解决方案......
您可以通过使用模板列来实现回发,
尽管我不确定您是否需要“UseSubmitBehavior”属性。
I realize this is ancient, but it still shows up high in Google results.
There is now a solution to this, maybe others as well...
You can achieve a postback by using a template column
Although I'm not sure if you need the "UseSubmitBehavior" property.
我在使用 Telerik 控件时也遇到了同样的问题。我通过使用新名称从零重新创建控件,然后重建我的结构来解决这个问题。
希望有帮助
I had the same problem with telerik controls. I solved this problem by recreating the Control from zero with a new name, then rebuilding my structure.
Hope it helps
RegisterWithScriptManager="false" 这也可能有效..
RegisterWithScriptManager="false" this may work as well..