2009-10-12 57 views
2

我目前正在评估Telerik的一些RAD控件,就在现在我正在试验RadGrid。RadGrid没有在ItemCommand事件上触发回发

所以我有我的网格控制和启用客户端绑定有Ajax支持。我创建了一个合适的WCF webservice来获取数据等。一切工作都很好,包括分页等。现在我想要一个按钮列来删除一些项目。我注册了网格的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

我不明白。你想回发发生或不?你的描述是矛盾的:“事件没有被解雇,基本上没有向服务器回传正在完成......但是这会导致每次点击一个回发,这并不是真正需要的” – Bryan 2009-10-12 23:43:38

+0

问题是如果我启用“EnablePostBackOnRowClick”,则只需单击该行上的任意位置即可完成回发。我想在按下其中一个动作按钮时触发回发。 – Juri 2009-10-13 06:30:41

回答

0

我有与telerik控件相同的问题。我通过用一个新名称重新创建零控件来解决这个问题,然后重建我的结构。

希望它可以帮助

2

你需要处理客户端的“按需”事件,或者更恰当地使用客户端“的RowDataBound”命令。在RowDataBound命令中,您可以找到您的rad按钮并为其添加一个事件。

要做到这一点的唯一方法是从按钮本身处理客户端“onclicking”事件。

结合到按需和行数据绑定示例:
<ClientSettings> <ClientEvents OnCommand="Grid_Command" OnRowDataBound="Grid_RowDataBound" /> </ClientSettings> 然后,在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 
    // ... // 
} 

`

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

0

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