#c# #asp.net #sql-server #stored-procedures
Вопрос:
Я использую Visual Studio 2017 (Windows 10) и сделал ASP.NET пустое веб-приложение на C#.
В SQL Server Express я написал хранимую процедуру для редактирования, обновления и удаления для моего представления сетки. Ранее я добавил строки для операций редактирования, обновления и удаления.
Но по соображениям безопасности мне теперь нужна хранимая процедура для администрирования моих данных. Хранимая процедура работает правильно, когда я выполняю ее в SSMS, и все, что я сделал до сих пор, — это внедрил хранимую процедуру в свой код. Но когда я выполняю код, никакие изменения не могут быть внесены, что бы это ни было.
Итак, вопрос в том, как я должен изменить свой код отсюда, в Visual Studio на C#, чтобы хранимая процедура работала при выполнении моего проекта?
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestUsers.Default" %>
<link href="TestUsers.css" rel="stylesheet" type="text/css" />
<!DOCTYPE html>
<link rel="stylesheet" href="TestUsers.css">
<link rel="shortcut icon" type="image/x-icon" href="~/orbitone.ico" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ESDTESTERS</title>
<%-- <meta http-equiv="refresh" content="20">--%>
</head>
<body>
<form id="form1" runat="server">
<div class="divC">
<asp:GridView ID="gvTestUsers" runat="server" AutoGenerateColumns="False" ShowFooter="True" DataKeyNames="tbl_users_key" ShowHeaderWhenEmpty="True" OnRowCommand="gvTestUsers_RowCommand" OnRowEditing="gvTestUsers_RowEditing" OnRowCancelingEdit="gvTestUsers_RowCancelingEdit"
OnRowDeleting="gvTestUsers_RowDeleting" OnRowUpdating="gvTestUsers_RowUpdating" HorizontalAlign="Center"
BackColor="#CCCCCC" BorderColor="#000000" BorderStyle="Solid" BorderWidth="3px" CellPadding="5" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width="1470px" CellSpacing="2" ForeColor="Black">
<%--Theme Properties--%>
<FooterStyle BackColor="#CCCCCC" />
<HeaderStyle BackColor="Black" Font-Bold="True" Font-Size="Large" ForeColor="White" />
<PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
<RowStyle BackColor="White" />
<SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#808080" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#383838" />
<Columns>
<asp:TemplateField HeaderText="tbl_users_key">
<ItemTemplate>
<asp:Label Text='<%# Eval("tbl_users_key") %>' runat="server" />
</ItemTemplate>
<%-- <EditItemTemplate>
<asp:TextBox ID="txtID" Text='<%# Eval("ID") %>' runat="server" />
</EditItemTemplate>--%>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label Text='<%# Eval("Name") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" Text='<%# Eval("Name") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtNamefooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="CostCenter">
<ItemTemplate>
<asp:Label Text='<%# Eval("CostCenter") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCostCenter" Text='<%# Eval("CostCenter") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtCostCenterfooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Employee">
<ItemTemplate>
<asp:Label Text='<%# Eval("Employee") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEmployee" Text='<%# Eval("Employee") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtEmployeefooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="FootPlate">
<ItemTemplate>
<asp:Label Text='<%# Eval("FootPlate") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtFootPlate" Text='<%# Eval("FootPlate") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtFootPlatefooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="WirstCord">
<ItemTemplate>
<asp:Label Text='<%# Eval("WirstCord") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtWirstCord" Text='<%# Eval("WirstCord") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtWirstCordfooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Excluded">
<ItemTemplate>
<asp:Label Text='<%# Eval("Excluded") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtExcluded" Text='<%# Eval("Excluded") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtExcludedfooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comment">
<ItemTemplate>
<asp:Label Text='<%# Eval("Comment") %>' runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtComment" Text='<%# Eval("Comment") %>' runat="server" />
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtCommentfooter" runat="server" />
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ImageUrl="~/GridImages/edit.png" runat="server" CommandName="Edit" ToolTip="Edit" Width="20px" Height="20px" />
<asp:ImageButton ImageUrl="~/GridImages/delete.png" runat="server" CommandName="Delete" ToolTip="Delete" Width="20px" Height="20px" />
</ItemTemplate>
<EditItemTemplate>
<asp:ImageButton ImageUrl="~/GridImages/save.png" runat="server" CommandName="Update" ToolTip="Update" Width="20px" Height="20px" />
<asp:ImageButton ImageUrl="~/GridImages/cancel.png" runat="server" CommandName="Cancel" ToolTip="Cancel" Width="20px" Height="20px" />
</EditItemTemplate>
<FooterTemplate>
<asp:ImageButton ImageUrl="~/GridImages/add.png" runat="server" CommandName="AddNew" ToolTip="Add New" Width="20px" Height="20px" />
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<br />
<div style="margin-left: auto; margin-right: auto; text-align: center;">
<asp:Label ID="lblSuccessMessage" Text="" runat="server" ForeColor="Green" style="text-align:center" Font-Bold="true" Font-Size="x-Large" />
<br />
<asp:Label ID="lblErrorMessage" Text="" runat="server" ForeColor="Red" style="text-align:center" Font-Bold="true" Font-Size="x-Large" />
</div>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace TestUsers
{
public partial class Default : System.Web.UI.Page
{
string connectionString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
//string connectionString = "Server=KNANTE800;Database=dataterm;Trusted_Connection=True";
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
PopulateGridView();
}
}
void PopulateGridView()
{
DataTable dtbl = new DataTable();
string connectionString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("Select * FROM TBL_USERS", sqlCon);
sqlDa.Fill(dtbl);
}
if (dtbl.Rows.Count > 0)
{
gvTestUsers.DataSource = dtbl;
gvTestUsers.DataBind();
}
else
{
dtbl.Rows.Add(dtbl.NewRow());
gvTestUsers.DataSource = dtbl;
gvTestUsers.DataBind();
gvTestUsers.Rows[0].Cells.Clear();
gvTestUsers.Rows[0].Cells.Add(new TableCell());
gvTestUsers.Rows[0].Cells[0].ColumnSpan = dtbl.Columns.Count;
gvTestUsers.Rows[0].Cells[0].Text = "No Data Found.";
gvTestUsers.Rows[0].Cells[0].HorizontalAlign = HorizontalAlign.Center;
}
}
protected void gvTestUsers_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName.Equals("AddNew"))
{
string connectionString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
//string query = "INSERT INTO TBL_USERS (Name,CostCenter,Employee,FootPlate,WirstCord,Excluded,Comment) VALUES (@Name,@CostCenter,@Employee,@FootPlate,@WirstCord,@Excluded,@Comment)";
SqlCommand sqlCmd = new SqlCommand("spEditTBL_USERS", sqlCon);
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
// sqlCmd.Parameters.AddWithValue("@tbl_users_key", (gvTestUsers.FooterRow.FindControl("txtIDfooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Name", (gvTestUsers.FooterRow.FindControl("txtNamefooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@CostCenter", (gvTestUsers.FooterRow.FindControl("txtCostCenterfooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Employee", (gvTestUsers.FooterRow.FindControl("txtEmployeefooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@FootPlate", (gvTestUsers.FooterRow.FindControl("txtFootPlatefooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@WirstCord", (gvTestUsers.FooterRow.FindControl("txtWirstCordfooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Excluded", (gvTestUsers.FooterRow.FindControl("txtExcludedfooter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Comment", (gvTestUsers.FooterRow.FindControl("txtCommentfooter") as TextBox).Text.Trim());
sqlCmd.ExecuteNonQuery();
PopulateGridView();
lblSuccessMessage.Text = "New Changes Complete.";
lblErrorMessage.Text = "";
}
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
protected void gvTestUsers_RowEditing(object sender, GridViewEditEventArgs e)
{
gvTestUsers.EditIndex = e.NewEditIndex;
PopulateGridView();
}
protected void gvTestUsers_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gvTestUsers.EditIndex = -1;
PopulateGridView();
}
protected void gvTestUsers_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
try
{
string connectionString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
//string query = "DELETE FROM TBL_USERS WHERE tbl_users_key = @id";
SqlCommand sqlCmd = new SqlCommand("spEditTBL_USERS", sqlCon);
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@id", Convert.ToInt32(gvTestUsers.DataKeys[e.RowIndex].Value.ToString()));
sqlCmd.ExecuteNonQuery();
PopulateGridView();
lblSuccessMessage.Text = "Selected Record Deleted.";
lblErrorMessage.Text = "";
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
protected void gvTestUsers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{
string connectionString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
sqlCon.Open();
//string query = "UPDATE TBL_USERS SET Name=@Name,CostCenter=@CostCenter,Employee=@Employee,FootPlate=@FootPlate,WirstCord=@WirstCord,Excluded=@Excluded,Comment=@Comment WHERE tbl_users_key = @id";
SqlCommand sqlCmd = new SqlCommand("spEditTBL_USERS", sqlCon);
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
// sqlCmd.Parameters.AddWithValue("@tbl_users_key", (gvTestUsers.FooterRow.FindControl("txtIDfooter") as TextBox).Text.Trim());//
sqlCmd.Parameters.AddWithValue("@Name", (gvTestUsers.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@CostCenter", (gvTestUsers.Rows[e.RowIndex].FindControl("txtCostCenter") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Employee", (gvTestUsers.Rows[e.RowIndex].FindControl("txtEmployee") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@FootPlate", (gvTestUsers.Rows[e.RowIndex].FindControl("txtFootPlate") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@WirstCord", (gvTestUsers.Rows[e.RowIndex].FindControl("txtWirstCord") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Excluded", (gvTestUsers.Rows[e.RowIndex].FindControl("txtExcluded") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@Comment", (gvTestUsers.Rows[e.RowIndex].FindControl("txtComment") as TextBox).Text.Trim());
sqlCmd.Parameters.AddWithValue("@id", Convert.ToInt32(gvTestUsers.DataKeys[e.RowIndex].Value.ToString()));
sqlCmd.ExecuteNonQuery();
gvTestUsers.EditIndex = -1;
PopulateGridView();
lblSuccessMessage.Text = "Selected Record Updated.";
lblErrorMessage.Text = "";
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
}
}
Хранимая процедура:
-- =============================================
-- Author: Måns Bodin
-- Create date: 2021-09.-23
-- Description: used for update ESD users
-- =============================================
ALTER PROCEDURE [dbo].[spEditTBL_USERS]
@ID int = null,
@NAME varchar(255),
@COSTCENTER varchar(10),
@EMPLOYEE varchar(32),
@FOOTPLATE bit,
@WIRSTCORD bit,
@EXCLUDED bit,
@MODE smallint,
@COMMENT varchar(255),
@MSG varchar(255) OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CHECK AS int
SET @MSG = ''
IF @MODE = 0
BEGIN
SELECT @CHECK = COUNT(1)
FROM TBL_USERS
WHERE employee = @EMPLOYEE
IF @CHECK != 0
BEGIN
SET @MSG = 'Employee already exists in database.'
RETURN 99
END
INSERT INTO TBL_USERS (Name, CostCenter, Employee, FootPlate, WIRSTCORD, Excluded, Comment)
VALUES (@NAME, @COSTCENTER, @EMPLOYEE, @FOOTPLATE, @WIRSTCORD, @EXCLUDED, @COMMENT)
RETURN 0
END
IF @MODE = 1
BEGIN
UPDATE TBL_USERS
SET Name = @NAME,
CostCenter = @COSTCENTER,
Employee = @EMPLOYEE,
FootPlate = @FOOTPLATE,
WIRSTCORD = @WIRSTCORD,
Excluded = @EXCLUDED,
Comment = @COMMENT
WHERE tbl_users_key = @ID
RETURN 9
END
IF @MODE = 2
BEGIN
DELETE FROM TBL_USERS
WHERE tbl_users_key = @ID
RETURN 0
END
-- select * from TBL_USERS
END
Комментарии:
1. Я бы установил EF Core Power Tools и использовал его для обратного проектирования БД в контексте. EFCPT создает отдельный контекст для сохраненных процессов, поэтому вы можете использовать его для вызова существующих процессов. Возможно, в конце концов вы начнете использовать EF, по крайней мере, для запросов только для чтения, главным образом потому, что каждая вариация sproc, которую вам придется написать, чтобы удовлетворить потребности современного приложения, невероятно утомительна и скучна или приводит к неоптимальным запросам/сумасшедшим предложениям, в которых используются несколько предикатов, и передаче слишком большого количества данных из БД..
2. То, как вы здесь осуществляете доступ к данным, настолько скучно, что в конечном итоге вы начнете искать способы упростить его, написав какую-нибудь библиотеку, которая вызывает хранимые процедуры.. затем вы его подправите, повозитесь с ним и расширите, чтобы, возможно, он возвращал объекты первого класса, а затем некоторую динамику параметров.. Тогда кто-нибудь укажет, что вы потратили месяцы своей жизни на написание версии EF для какого-нибудь бедняка; Я указываю, что вы можете сократить ее прямо сейчас и приступить к интересным частям программирования..
Ответ №1:
Я изменил его таким образом, и он очень хорошо сработал для меня!
Обновление строк:
{
try
{
//Parameters Set From Grid
string tmpUsers_key = (gvTestUsers.Rows[e.RowIndex].FindControl("txtID") as TextBox).Text.Trim();
string tmpName = (gvTestUsers.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text.Trim();
string tmpCostCenter = (gvTestUsers.Rows[e.RowIndex].FindControl("txtCostCenter") as TextBox).Text.Trim();
string tmpEmployee = (gvTestUsers.Rows[e.RowIndex].FindControl("txtEmployee") as TextBox).Text.Trim();
string tmpFootPlate = (gvTestUsers.Rows[e.RowIndex].FindControl("txtFootPlate") as TextBox).Text.Trim();
string tmpWirstCord = (gvTestUsers.Rows[e.RowIndex].FindControl("txtWirstCord") as TextBox).Text.Trim();
string tmpExcluded = (gvTestUsers.Rows[e.RowIndex].FindControl("txtExcluded") as TextBox).Text.Trim();
string tmpComment = (gvTestUsers.Rows[e.RowIndex].FindControl("txtComment") as TextBox).Text.Trim();
string tmpsMsg = "";
//Call function for SP_UPDATE
bool FuncResult = fcEditTBL_USERS(Convert.ToInt32(tmpUsers_key), tmpName, tmpCostCenter, tmpEmployee, Convert.ToBoolean(tmpFootPlate), Convert.ToBoolean(tmpWirstCord), Convert.ToBoolean(tmpExcluded), tmpComment,ref tmpsMsg,1);
//Reload Page
PopulateGridView();
lblSuccessMessage.Text = "Selected Record Updated.";
lblErrorMessage.Text = "";
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
Разделение строк:
{
try
{
{
gvTestUsers.EditIndex = e.RowIndex;
PopulateGridView();
//Parameters for delete operation
string dltUsers_key = (gvTestUsers.Rows[e.RowIndex].FindControl("txtID") as TextBox).Text.Trim();
string dltName = (gvTestUsers.Rows[e.RowIndex].FindControl("txtName") as TextBox).Text.Trim();
string dltCostCenter = (gvTestUsers.Rows[e.RowIndex].FindControl("txtCostCenter") as TextBox).Text.Trim();
string dltEmployee = (gvTestUsers.Rows[e.RowIndex].FindControl("txtEmployee") as TextBox).Text.Trim();
string dltFootPlate = (gvTestUsers.Rows[e.RowIndex].FindControl("txtFootPlate") as TextBox).Text.Trim();
string dltWirstCord = (gvTestUsers.Rows[e.RowIndex].FindControl("txtWirstCord") as TextBox).Text.Trim();
string dltExcluded = (gvTestUsers.Rows[e.RowIndex].FindControl("txtExcluded") as TextBox).Text.Trim();
string dltComment = (gvTestUsers.Rows[e.RowIndex].FindControl("txtComment") as TextBox).Text.Trim();
string dltsMsg = "";
//Call function for SP_Delete
bool FuncDelete = fcEditTBL_USERS(Convert.ToInt32(dltUsers_key), dltName, dltCostCenter, dltEmployee, Convert.ToBoolean(dltFootPlate), Convert.ToBoolean(dltWirstCord), Convert.ToBoolean(dltExcluded), dltComment,ref dltsMsg,2);
if (FuncDelete == false)
{
lblErrorMessage.Text = dltsMsg;
lblSuccessMessage.Text = " ";
return;
}
PopulateGridView();
lblSuccessMessage.Text = "Selected Record Deleted.";
lblErrorMessage.Text = "";
gvTestUsers.EditIndex = -1;
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}
}
Команда гребцов:
{
try
{
if (e.CommandName.Equals("AddNew"))
{
int tbl_users_key = 0;
TextBox myTxt;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtNamefooter"));
string Name;
Name = myTxt.Text;
string CostCenter;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCostCenterfooter"));
CostCenter = myTxt.Text;
string Employee;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtEmployeefooter"));
Employee = myTxt.Text;
Boolean FootPlate;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtFootPlatefooter"));
// string tmpFootPlate = (gvTestUsers.FooterRow.FindControl("txtFootPlate") as TextBox).Text.Trim();
// boo Convert.ToBoolean(tmpFootPlate)
FootPlate = Convert.ToBoolean(myTxt.Text);
Boolean WirstCord;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtWirstCordfooter"));
WirstCord = Convert.ToBoolean(myTxt.Text);
Boolean Excluded;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtExcludedfooter"));
Excluded = Convert.ToBoolean(myTxt.Text);
string Comment;
myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCommentfooter"));
Comment = myTxt.Text;
string sMsg;
sMsg = "";
bool btest = fcEditTBL_USERS(tbl_users_key, Name, CostCenter, Employee, FootPlate, WirstCord, Excluded, Comment, ref sMsg,0);
if (btest == false)
{
lblErrorMessage.Text = sMsg;
lblSuccessMessage.Text = " ";
return;
}
PopulateGridView();
lblSuccessMessage.Text = Name " Was Added To Record.";
}
}
catch (Exception ex)
{
lblSuccessMessage.Text = "";
lblErrorMessage.Text = ex.Message;
}