我在我的应用程序中使用了 Obout 网格。我已经在其上设置了客户端事件,并且所有其他客户端事件都可以正常工作,除了:OnClientCallbackError。我在服务器端有一个方法可以在执行删除之前验证数据库端的删除。这是它的代码:
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 支持人员提出了同样的问题,但他们在整整一周后都没有回复我。当我运行应用程序时,我看到错误被抛出并且我的应用程序崩溃了。网格的代码是:
<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>