2011-08-12 12 views
0

RadGridとRadToolBarコントロール(以下)が含まれているユーザーコントロールがあります。RadGrid ItemDataBoundイベントで別のイベントが無視される

<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> 

ページの内容を保存するには、ポストバックのINIT RadToolBar ButtonClickイベント(ページがなど、リスト、テキストボックスをドロップダウンなど、他のコントロールが含まれていますが、どれも私が午前問題に関連されていません)。上記のコードでは、すべてが正常に動作します(RadToolBar ButtonClickイベントハンドラが呼び出され、ページのコンテンツが保存されます)。

この問題は、RadGridのItemDataBoundイベント(以下を参照)のイベントハンドラを追加するときに発生します。私は、ButtonコントロールのPostBackUrlを(私はRadGridの行のコンテンツのIDを必要とするので、私はこのイベントでそれを行う)を設定するために、このハンドラを使用し

<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); 
    } 
} 

。問題は、RadToolBar ButtonClickイベントハンドラがもう呼び出されないということです。

イベントシーケンスは、Load - > NeedDataSource - > ButtonClickです。 ItemDataBoundイベントを追加した後、シーケンスはLoad - > NeedDataSource - > ItemDataBoundです(ButtonClickイベントは無視されます)。

RadGridでItemDataBoundイベントを追加すると、RadToolBarのButtonClickイベントに影響するのはなぜですか? ItemDataBoundイベントを維持したまま、ButtonClickイベントを「無視しない」ようにするにはどうすればよいですか?

ありがとうございました。

+0

try/catch-blockでRadGrid1_ItemDataBoundを囲みます。 – vladimir77

+0

ありがとうございますが、私の問題はイベントハンドラRadGrid1_ItemDataBoundではありません。私の問題は、RadToolBar ButtonClickイベントハンドラ(図示せず)がヒットしないことです。 – oonyalo

答えて

0
  1. buttonclickイベントが発生するのには、onClick =" yourHandlerName "はありません。

  2. あなたはtelerik GridButtonColumn列を使用してCommandName = "DoDomething"を設定し、グリッドのOnItemCommand="Grid1_ItemCommandのEventHandlerでそれを発射することができます。

関連する問題