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イベントを「無視しない」ようにするにはどうすればよいですか?
ありがとうございました。
try/catch-blockでRadGrid1_ItemDataBoundを囲みます。 – vladimir77
ありがとうございますが、私の問題はイベントハンドラRadGrid1_ItemDataBoundではありません。私の問題は、RadToolBar ButtonClickイベントハンドラ(図示せず)がヒットしないことです。 – oonyalo