radgrid控件的ItemDataBound事件会导致忽略另一个事件

问题描述 投票:0回答:1

我有一个包含一个radgrid控件和RadToolBar控制(下面)的用户控制。

<telerik:RadToolBar ID="RadToolBar1" runat="server" Skin="Web20" style="width:100%;" OnButtonClick="RadToolBar1_ButtonClick">
    <Items>
        <telerik:RadToolBarButton ImageUrl="~/[path_omitted]/SaveRadToolBar1.png" Text="Save" ToolTip="Save" />
    </Items>
</telerik:RadToolBar>


<telerik:RadGrid ID="RadGrid1" runat="server" Skin="Vista" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource"> 
    <MasterTableView CommandItemDisplay="None" Height="30" DataKeyNames="ID" ClientDataKeyNames="ID" GroupLoadMode="Client" NoMasterRecordsText="You do not have any data"> 
        <GroupByExpressions> 
            <telerik:GridGroupByExpression> 
                <GroupByFields> 
                    <telerik:GridGroupByField FieldName="Topic.Category.Name" /> 
                </GroupByFields> 
                <SelectFields> 
                    <telerik:GridGroupByField FieldName="Topic.Category.Name" HeaderText="Category" /> 
                </SelectFields> 
            </telerik:GridGroupByExpression> 
        </GroupByExpressions> 

        <Columns> 
            <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="DataID" Visible="false" />
            <telerik:GridBoundColumn DataField="Topic.ID" UniqueName="DataTopicID" Visible="false" />
            <telerik:GridBoundColumn DataField="Topic.Category.Name" HeaderText="Name" UniqueName="DataCategoryName" Visible="false" /> 
            <telerik:GridBoundColumn DataField="Topic.Name" HeaderText="Topic" UniqueName="DataTopicName" /> 
            <telerik:GridTemplateColumn HeaderText="Go" UniqueName="DataGoTo" HeaderStyle-Width="50"> 
                <ItemTemplate> 
                    <asp:Button ID="ButtonGoTo" runat="server" ToolTip="Go to data" Text="Go" /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
        </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 

该RadToolBar ButtonClick事件inits回发来保存网页的内容(网页包含其他控件,例如下拉列表,文本框等,但没有涉及到,我遇到的问题)。与上面的代码一切正常(在RadToolBar ButtonClick事件处理程序被调用和页面上的内容被保存)。

当我添加了radgrid控件的ItemDataBound事件的事件处理程序(见下文),将出现问题。

<telerik:RadGrid ID="RadGrid1" runat="server" Skin="Vista" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" OnItemDataBound="RadGrid1_ItemDataBound"> 
    <MasterTableView CommandItemDisplay="None" Height="30" DataKeyNames="ID" ClientDataKeyNames="ID" GroupLoadMode="Client" NoMasterRecordsText="You do not have any data"> 
        <GroupByExpressions> 
            <telerik:GridGroupByExpression> 
                <GroupByFields> 
                    <telerik:GridGroupByField FieldName="Topic.Category.Name" /> 
                </GroupByFields> 
                <SelectFields> 
                    <telerik:GridGroupByField FieldName="Topic.Category.Name" HeaderText="Category" /> 
                </SelectFields> 
            </telerik:GridGroupByExpression> 
        </GroupByExpressions> 

        <Columns> 
            <telerik:GridBoundColumn DataField="ID" HeaderText="ID" UniqueName="DataID" Visible="false" />
            <telerik:GridBoundColumn DataField="Topic.ID" UniqueName="DataTopicID" Visible="false" />
            <telerik:GridBoundColumn DataField="Topic.Category.Name" HeaderText="Name" UniqueName="DataCategoryName" Visible="false" /> 
            <telerik:GridBoundColumn DataField="Topic.Name" HeaderText="Topic" UniqueName="DataTopicName" /> 
            <telerik:GridTemplateColumn HeaderText="Go" UniqueName="DataGoTo" HeaderStyle-Width="50"> 
                <ItemTemplate> 
                    <asp:Button ID="ButtonGoTo" runat="server" ToolTip="Go to data" Text="Go" /> 
                </ItemTemplate> 
            </telerik:GridTemplateColumn> 
        </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
        GridDataItem dataItem = e.Item as GridDataItem; 
        (dataItem["DataGoTo"].FindControl("ButtonGoTo") as Button) 
            .PostBackUrl = String.Format( 
                "~/ShowData.aspx?id={0}", 
                dataItem["DataTopicID"].Text); 
    } 
}

我用这个处理程序来设置一个按钮控件(我这样做是对这个事件,因为我需要的radgrid控件的行内容的ID)的一项PostBackUrl。问题是,RadToolBar ButtonClick事件处理程序不会得到了调用。

随着一切工作,事件顺序是:负载 - > NeedDataSource - > ButtonClick。加入ItemDataBound事件后的顺序是负载 - > NeedDataSource - >的ItemDataBound(ButtonClick事件被“忽略”)。

为什么加入ItemDataBound事件在radgrid控件影响到RadToolBar ButtonClick事件?我要如何才能到达“不容忽视”,同时仍保持ItemDataBound事件ButtonClick事件?

谢谢。

asp.net event-handling telerik radgrid
1个回答
0
投票
  1. 没有qazxsw POI为您的按钮单击事件被炒鱿鱼。
  2. 您可以使用Telerik的onClick =" yourHandlerName "列,设置GridButtonColumn和网格的CommandName = "DoDomething"事件处理程序启动它。
© www.soinside.com 2019 - 2024. All rights reserved.