アプリケーションで Obout グリッドを使用しています。クライアント側のイベントを設定しましたが、他のすべてのクライアント側のイベントは完全に機能しますが、OnClientCallbackError.I はサーバー側にメソッドを持っており、実行前にデータベース側で削除を検証します。そのコードは次のとおりです。
protected void DeleteRecord(object sender, GridRecordEventArgs e)
{
//check if the record is not used in any other relationship
var id = Convert.ToInt32(e.Record["ID"].ToString());
var result =_areaRepository.RelationshipCheck("env_Area", id);
var desc = e.Record["Description"].ToString();
string message;
if(result <= 0)
{
//show error message
_areaRepository.UpdateArea(id, desc, true);
}
else
{
message = "Record cannot be deleted";
throw new Exception(message);
}
}
これはルックアップ テーブルの削除です。上記のコードが行うことは、削除されるレコードが他の関係で使用されていないかどうかを確認することです。使用されていない場合は、DLTD というフィールドがあり、これを true に更新して、ユーザーがこのレコードを二度と見ないようにします。この部分は機能します。
レコードがリレーションシップで使用されている場合、例外メッセージがスローされます。Obout サイトの例に基づいて説明します。
以下のような関数がある場合:
function onCallbackError(errorMessage, commandType, recordIndex, data) {
alert(errorMessage);
callbackErrorWasRaised = true;
}
そして、あなたが持っているグリッドのクライアント側イベントで:
<ClientSideEvents ExposeSender="True" OnClientAdd="OnAdd" OnClientEdit="OnEdit" OnClientCallbackError="onCallbackError" />
警告メッセージは問題なく表示されるはずですが、私のものは機能していません。コードから更新パネルを削除しました。また、マスター ページには次のようなスクリプト マネージャーがあります。
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" EnablePageMethods="True" EnablePartialRendering="True">
</asp:ScriptManager>
Obout スイートを購入しました。Obout のサポートに同じ質問をしましたが、1 週間経っても回答がありません。アプリケーションを実行すると、エラーがスローされ、アプリケーションがクラッシュすることがわかります。グリッドのコードは次のとおりです。
<cc1:Grid ID="grid1" runat="server" CallbackMode="true" Serialize="true" AutoGenerateColumns="false"
OnRebind="RebindGrid" OnInsertCommand="InsertRecord" OnDeleteCommand="DeleteRecord"
OnUpdateCommand="UpdateRecord" EnableTypeValidation="False">
<ClientSideEvents ExposeSender="True" OnClientAdd="OnAdd" OnClientEdit="OnEdit" OnClientCallbackError="onCallbackError" />
<TemplateSettings RowEditTemplateId="tplRowEdit" />
<Columns>
<cc1:Column DataField="ID" Visible="false" Width="150" ReadOnly="true" HeaderText="ID">
</cc1:Column>
<cc1:Column DataField="Code" AllowGroupBy="true" Wrap="false" ShowFilterCriterias="true"
ParseHTML="false" Align="left" HeaderAlign="left" Width="200" HeaderText="Code">
<TemplateSettings RowEditTemplateControlId="txtCode" RowEditTemplateControlPropertyName="value" />
</cc1:Column>
<cc1:Column DataField="Description" Visible="True" AllowGroupBy="true" Wrap="false"
ShowFilterCriterias="true" ParseHTML="false" Align="left" HeaderAlign="left"
Width="250" HeaderText="Description">
<TemplateSettings RowEditTemplateControlId="txtDescription" RowEditTemplateControlPropertyName="value" />
</cc1:Column>
<cc1:Column DataField="UnitMeasureID" Visible="true" ShowFilterCriterias="true" HeaderAlign="left"
ParseHTML="false" Align="left" Width="190" HeaderText="UnitMeasureID">
<TemplateSettings RowEditTemplateControlId="txtUnitMeasureID" RowEditTemplateControlPropertyName="value" />
</cc1:Column>
<cc1:Column DataField="DLTD" Visible="false" ShowFilterCriterias="true" HeaderAlign="left"
ParseHTML="false" Align="left" Width="110" HeaderText="DLTD">
</cc1:Column>
<cc1:Column HeaderText="EDIT" Width="150" AllowEdit="true" AllowDelete="true" />
</Columns>
<Templates>
<cc1:GridTemplate runat="server" ID="tplRowEdit">
<Template>
<table class="rowEditTable">
<tr>
<td valign="top">
<fieldset style="width: 275px; height: 175px;">
<legend>New Mining Area Information</legend>
<table>
<tr>
<td>
Code:
</td>
<td>
<input type="text" id="txtCode" style="width: 150px;" class="ob_gEC" />
</td>
</tr>
<tr>
<td>
Description:
</td>
<td>
<input type="text" id="txtDescription" style="width: 150px;" class="ob_gEC" />
</td>
</tr>
<tr>
<td>
Unit Measure:
</td>
<td>
<cc3:OboutDropDownList ID="txtUnitMeasureID" runat="server" Height="150" Width="100%"
DataSourceID="unitMeasureODS" DataTextField="Description" DataValueField="ID">
</cc3:OboutDropDownList>
</td>
</tr>
<tr>
<td colspan="2">
<br />
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="button" value="Save" onclick="grid1.save()" class="tdText" />
<input type="button" value="Cancel" onclick="grid1.cancel()" class="tdText" />
</td>
</tr>
</table>
</Template>
</cc1:GridTemplate>
</Templates>
</cc1:Grid>