ورود

View Full Version : قفل کردن تعدادی رکورد تا موقعی که صفحه باز است



Behrouz1985
چهارشنبه 11 اسفند 1389, 09:45 صبح
سلام
توی یه برنامه اموال، یه جدول درخواست داریم که یکی درخواست میده، یکی تایید میکنه و ...
و تا وقتی که درخواست تایید نشده، توسط درخواست دهنده قابل ویرایشه
حالا اگه بخوایم هر موقع که مثلا تایید کننده در حال مشاهده و اصلاح یه درخواست بود، دیگه درخواست دهنده نتونه اون درخواست رو دستکاری کنه یا برعکس(وقتی که درخواست کننده در حال ویرایش درخواسته، تایید کننده نتونه اون درخواست رو ببینه) آیا راهی وجود داره؟
در واقع می خوام تا وقتی که صفحه اصلاح و ویرایش درخواست توسط یه طرف بازه، طرف دیگه نتونه اونو ببینه.
آیا دوستان راه حل پیشنهادی دارند؟

Alireza_Salehi
چهارشنبه 11 اسفند 1389, 13:07 عصر
بهتر است از Transaction ها استفاده کنید:
یک مثال:
http://www.c-sharpcorner.com/UploadFile/dchoksi/transaction02132007020042AM/transaction.aspx

eyes_shut_number1
چهارشنبه 11 اسفند 1389, 13:41 عصر
یکم کنترل همچین حالتی توی وب سخته!
فرض کن صفحه رو باز کردی و 10 تا رکورد لاک شد
حالا کاربر میاد مرورگر رو میبنده! در این حالت شما متوجه نمیشی که کاربر دیگه تو صفحه نیست.
میشه یک دکمه گذاشت که برای خروج از اون استفاده کنند اما بازم میتونه بروزر رو ببنده.

میتونی یک صف تشکیل بدی تو یک تیبل جدا
که فیلد ای دی جدول رو نگه داری و یک فیلذ تاریخی که فیلد ها لاک شده

حالا بیای یه زمان در نظر بگیری که مثلا بعد از 10 دقیقه اون رکورد ها رو از لاک در بیاره

Behrouz1985
چهارشنبه 11 اسفند 1389, 16:55 عصر
بهتر است از Transaction ها استفاده کنید:
یک مثال:
http://www.c-sharpcorner.com/UploadFile/dchoksi/transaction02132007020042AM/transaction.aspx
تا جایی که من می دونم transaction برای موقعی که می خوای یه سری دستورات اجرا بشن و یا همه اجرا شوند یا هیچکدام اجرا نشود.
اما مشکل من اینه که می خوام وقتی که رکوردها select شدن و به gridview منتقل شدند تا زمانیکه صفحه بسته نشده و کاربر در حال مشاهده رکوردهاست و احیانا ویرایشی صورت بگیره، کاربر دیگه ای نتونه هیچ کاری با اون رکوردها کنه و هنگامی که صفحه بسته شد، رکوردها آزاد شوند

veronika
چهارشنبه 11 اسفند 1389, 18:03 عصر
با استفاده از ايجكس و وب سرويس و javascriptدر رويداد onclose من اين كارو انجام دادم يعني به سرور وصل شدم ومقدار فيلد را تغيير دادم خواستين براتون كدش را ميذارم

Behrouz1985
چهارشنبه 11 اسفند 1389, 18:17 عصر
با استفاده از ايجكس و وب سرويس و javascriptدر رويداد onclose من اين كارو انجام دادم يعني به سرور وصل شدم ومقدار فيلد را تغيير دادم خواستين براتون كدش را ميذارم
ممنون می شم اگه اینکارو بکنید. ولی اگه یهو سیستم client هنگ کنه، مشکلی که پیش نمی آد؟

veronika
پنج شنبه 12 اسفند 1389, 16:17 عصر
<%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="hotelroommaster.aspx.cs" Inherits="Test.hotelroommaster" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/checkroom.asmx" />
</Services>
</asp:ScriptManager>
<script type="text/javascript" language="javascript">
window.onbeforeunload = HandleOnClose;
function HandleOnClose() {
Hotel.checkroom.update('a');
return "Are you sure you really want to close?";
}
function CallOnClick() {
Hotel.checkroom.update('a');
}
</script>

<input id="Button1" type="button" value="button" onclick="CallOnClick()" />
</asp:Content>












namespace Hotel
{
/// <summary>
/// Summary description for CheckEmployeeService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class checkroom : System.Web.Services.WebService
{
public checkroom()
{

}
[WebMethod]
public void update(string reservenumber)
{
// do
// tempreserve.UpdateRowbyreservid(reservenumber);
}
}
}