Ajouter une validation de fonction personnalisée côté serveur

Scénarios d’utilisation possibles

Parfois, vous devrez peut-être implémenter la validation des données côté serveur. Aspose.Cells.GridWeb vous permet d’ajouter une validation personnalisée des données côté serveur. Vous devez spécifier la plage de cellules ou la zone. Vous pouvez également définir des fonctions de validation côté client pour les rappels avec une validation côté serveur personnalisée.

Ajouter une validation de fonction personnalisée côté serveur

Vous devez définir la classe de validation du serveur qui implémente leGridCustomServerValidationGridCustomServerValidation viaGridValidation.ServerValidation attribut. Vous devez également définir la fonction de validation côté client (elle doit être écrite en JavaScript côté client), cette fonction est obligatoire pour valider les données côté client lors du rappel. Vous pouvez définir la chaîne de message d’erreur viaGridValidation.ErrorMessageGridValidation.ErrorMessage et le titre viaGridValidation.ErrorTitleGridValidation.ErrorTitlepropriétés pour vos besoins. Veuillez voir une série de captures d’écran qui montrent comment cela fonctionne (étape par étape) dans un scénario donné après avoir exécuté l’exemple de code ci-dessous. Dans l’exemple, vous ne pouvez pas mettre à jour les données dans les cellules B2 : C3. Lorsque vous essayez de modifier ces cellules dans la feuille, des messages d’erreur s’affichent et la valeur précédente est restaurée. Vous pouvez ouvrir la fenêtre de la console (dans votre navigateur) pour imprimer les informations/détails de la cellule pour certains événements.

tâche : image_autre_texte

tâche : image_autre_texte

tâche : image_autre_texte

tâche : image_autre_texte

tâche : image_autre_texte

Exemple de code

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
-----------------------------------------------
AddCustomServerSideFunctionValidation.aspx
-----------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddCustomServerSideFunctionValidation.aspx.cs" Inherits="Aspose.Cells.GridWeb.Examples.AddCustomServerSideFunctionValidation" %>
<%@ Register TagPrefix="acw" Namespace="Aspose.Cells.GridWeb" Assembly="Aspose.Cells.GridWeb" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link rel="stylesheet" href="/Scripts/jquery-ui.css" />
<script src="/Scripts/jquery-2.1.1.js"></script>
<script src="/Scripts/jquery-ui.js"></script>
<script type="text/javascript">
var lastselectvalue = null;
var localvalue = {};
function myCellSelect(cell) {
//Get the selected cell.
var value = this.getCellValueByCell(cell);
//Get the value to store.
lastselectvalue = value;
var key = this.acttab + "_" + this.getCellRow(cell) + "_" + this.getCellColumn(cell);
//Store the respective cell's value.
localvalue[key] = lastselectvalue;
console.log("OnCellSelect: value:" + value + " row:" + this.getCellRow(cell) + ",col:" + this.getCellColumn(cell));
console.log("Last selected value:" + lastselectvalue);
}
function ValidationErrorClientFunctionCallback(cell, msg) {
//Get the error message string.
var errmsg1 = getattr(cell, "errmsg");
//Show the error message in the client dialog.
alert(errmsg1);
//Showing an alert message where "this" refers to GridWeb
alert(this.id + "----> " + msg + " Previous value will be restored.");
$("#errmsg").text(msg);
console.log("Selected cell:" + " row:" + this.getCellRow(cell) + ",col:" + this.getCellColumn(cell));
//Get the GridWeb.
var who = this;
//Restore to valid value/previous value.
who.setValid(cell);
var key = this.acttab + "_" + this.getCellRow(cell) + "_" + this.getCellColumn(cell);
lastselectvalue = localvalue[key];
setInnerText(cell.children[0], lastselectvalue);
}
</script>
<title>Add Custom Server-side Function Validation</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<b>GridWeb Version:&nbsp</b>
<asp:Label ID="lblVersion" runat="server" Text="Label"></asp:Label>
<br />
<acw:GridWeb ID="GridWeb1" runat="server" OnCellSelectedClientFunction="myCellSelect" Width="44%" Height="384px" ShowLoading="true" XhtmlMode="true"
PresetStyle="Standard" EnableAJAX="true" EnableAsync="true" RenderHiddenRow="true" MaxColumn="15" MaxRow="21">
</acw:GridWeb>
</div>
</div>
<span id="errmsg" style="color: red;"></span>
</form>
</body>
</html>
-----------------------------------------------
AddCustomServerSideFunctionValidation.aspx.cs
-----------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Aspose.Cells.GridWeb;
using Aspose.Cells.GridWeb.Data;
namespace Aspose.Cells.GridWeb.Examples
{
class MyServerValidation : GridCustomServerValidation
{
public string Validate(GridWorksheet sheet, int row, int col, string value)
{
if ((row == 1) || (row == 2))
{
return "Value Not Passed!";
}
else
{
return string.Empty;
}
}
}
public partial class AddCustomServerSideFunctionValidation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && !this.GridWeb1.IsPostBack)
{
lblVersion.Text = GridWeb.GetVersion();
//Input values to B2:C3 cells in the active worksheet.
GridWeb1.ActiveSheet.Cells["B2"].PutValue("This");
GridWeb1.ActiveSheet.Cells["C2"].PutValue("cannot");
GridWeb1.ActiveSheet.Cells["B3"].PutValue("be");
GridWeb1.ActiveSheet.Cells["C3"].PutValue("changed");
//Get the validations of the active sheet.
var gridValidationCollection = GridWeb1.ActiveSheet.Validations;
//Add data validation to range/area: B2:C3
GridValidation gv = gridValidationCollection.Add(new GridCellArea(1, 1, 2, 2));
//Set the validation type to custom server function.
gv.ValidationType = GridValidationType.CustomServerFunction;
//Set the server validation class which implements the GridCustomServerValidation interface.
gv.ServerValidation = new MyServerValidation();
//Set the client validation function (written in JavaScript on client-side).
//This function is compulsory to validate the data on client end on callback.
gv.ClientValidationFunction = "ValidationErrorClientFunctionCallback";
//Set the error message string.
gv.ErrorMessage = "Error found! You cannot change this value.";
//Set the error title.
gv.ErrorTitle = "Error";
}
}
}
}