ورود

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



soroush_216
چهارشنبه 27 مهر 1390, 20:13 عصر
سلام به همگی اساتید

من دارم یه برنامه دبیرخونه تحت وب مینویسم که از وب سرویس و LinQ برای کدهای دیتابیسش استفاده میکنم .
حالا وقتی که صفحه برای اولین بار لود میشه و رکورد جدیدی رو تو دیتابیس درج میکنیم هیچ مشکلی نیست ، بعد از درج هم تمامی تکست باکس ها خالی میشن و بیشتر این تکست باکس ها هم برای چک خالی بودن از ولیدت ها دارم استفاده میکنم ، حالا بعد درج اگه من صفحه رو رفرش کنم همون مقایری که تازه به دیتابیس اضافه کردم یک بار دیگه به دیتابیس اضافه میشه !!!!
چه کار کنم که این مشکل از بین بره؟

پیشاپیش سپاس .

Alfred188
چهارشنبه 27 مهر 1390, 23:23 عصر
سلام،
مقادیر دیتابیس رو مستقیم استفاده می کنید یا اول میریزینشون تو متغیر های خاص ؟ اگه می ریزید تو متغیر مقادیر اولیه متغیر رو موقع تعریف 0 یا null در نظر بگیرید؟
و اگه مشکل حل نشد کدها رو بزارید تا بررسی کنیم!

soroush_216
پنج شنبه 28 مهر 1390, 08:27 صبح
ممنون از جوابتون.

همونطور که گفتم من کدهای لینکیو رو تو وب سرویس نوشتم و تو وب فرم وب سرویس رو فراخونی میکنم.

کد قسمت وب سرویس :
[WebMethod]
public void AddPost(string TitlePost,int Unit)
{
DataClassesDataContext db = new DataClassesDataContext();
tlbPost Tblpost = new tlbPost();
try
{
Tblpost._TitlePost = TitlePost;
Tblpost._Unit = Unit;
db.tlbPosts.InsertOnSubmit(Tblpost);
db.SubmitChanges();

}
catch { }
}

کد قسمت وب فرم :

protected void btnAdd_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
SvcPost.SvcPost AddPost = new Secretariat.SvcPost.SvcPost();
try
{
if (_Post.Text.Trim() != "" || _Post.Text.Trim() != null)
{
AddPost.AddPost(_Post.Text, Convert.ToInt32(_Unit.SelectedValue));
}
else
{
lblmsg.Text = "عنوان پست مورد را وارد کنید";
return;
}

}
catch
{
lblmsg.Text = "خطا در انجام عملیات";
}

lblmsg.Text = "پست جدید ثبت گردید";
_Post.Text = "";
}
}

soroush_216
جمعه 29 مهر 1390, 14:41 عصر
:متفکر:
:ناراحت:

saeed262626
شنبه 30 مهر 1390, 08:02 صبح
فكر كنم شما بايد كدي رو بنوبيسيد كه اگه صفحه refresh شد چيزي insert و يا update نشه.من خودم با اين مشكل روبرو شدم و از اين كد استفاده كردم


private bool _refreshState;
private bool _isRefresh;
protected override void LoadViewState(object savedState)
{
object[] AllStates = (object[])savedState;
base.LoadViewState(AllStates[0]);
_refreshState = bool.Parse(AllStates[1].ToString());
_isRefresh = _refreshState == bool.Parse(Session["__ISREFRESH"].ToString());
}

protected override object SaveViewState()
{
Session["__ISREFRESH"] = _refreshState;
object[] AllStates = new object[2];
AllStates[0] = base.SaveViewState();
AllStates[1] = !(_refreshState);
return AllStates;
}



موقع ثبت اين شرط رو چك كن

if ((Page.IsValid) && (!_isRefresh))

Saber_Fatholahi
شنبه 30 مهر 1390, 09:58 صبح
دوست عزیز یه راه دیگه چک کردن رکورد های تکراری در زمان ثبت رکورد توی SP هست

منم یه سوال دارم برای برنامه تحت وب (دبیر خونه) چطور متن کاربر با قالب دلخواه می گیرین از نرم افزار ورد استفاده می کنین یا روش دیگه ای در پیش گرفتین؟