Benutzerdefinierte serverseitige Funktionsvalidierung hinzufügen
Mögliche Verwendungsszenarien
Manchmal möchten Sie möglicherweise eine Datenvalidierung serverseitig implementieren. Aspose.Cells.GridWeb ermöglicht es Ihnen, benutzerdefinierte serverseitige Datenvalidierungen hinzuzufügen. Sie müssen den Zellenbereich oder Bereich angeben. Sie können auch clientseitige Validierungsfunktionen für Rückrufe mit benutzerdefinierter serverseitiger Validierung festlegen.
Benutzerdefinierte serverseitige Funktionsvalidierung hinzufügen
Sie müssen die Servervalidierungsklasse festlegen, die das GridCustomServerValidation-Interface über das Attribut GridValidation.ServerValidation implementiert. Sie müssen auch die clientseitige Validierungsfunktion festlegen (sie sollte auf der Clientseite in JavaScript geschrieben sein), diese Funktion ist obligatorisch, um die Daten clientseitig bei einem Rückruf zu validieren. Sie können die Fehlermeldung als Zeichenfolge über die Eigenschaft GridValidation.ErrorMessage und den Titel über die Eigenschaft GridValidation.ErrorTitle für Ihre Bedürfnisse festlegen. Bitte sehen Sie sich eine Reihe von Screenshots an, die zeigen, wie es in einem bestimmten Szenario funktioniert (Schritt für Schritt) nach Ausführung des unten stehenden Beispielcodes. Im Beispiel können Sie keine Daten in den Zellen B2:C3 aktualisieren. Wenn Sie versuchen, diese Zellen im Blatt zu bearbeiten, erhalten Sie Fehlermeldungen und der vorherige Wert wird wiederhergestellt. Sie können das Konsolenfenster (in Ihrem Browser) öffnen, um Zellinformationen/Details für bestimmte Ereignisse anzuzeigen.
Beispielcode
// 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: </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"; | |
} | |
} | |
} | |
} |