PDA

View Full Version : سوال: مشکل در بدست آوردن مقدار textbox



mohsen-unique
سه شنبه 11 بهمن 1390, 13:37 عصر
سلام
شاید عنوان سوال عجیب باشه ولی من واقعا توی این زمینه مشکل دارم:ناراحت:
یه فرم وب طراحی کردم که با گرفتن شماره ی کاربری از طریق QueryString به نام id اطلاعات کاربر رو توی یه سری textbox که توی اون صفحه هستن نمایش می ده
تا اینجا مشکلی نیست من از کد زیر برای این کار استفاده کردم

id = Convert.ToInt32(Request.QueryString["ID"]);
UsersTableAdapter ta_user = new UsersTableAdapter();
UniqueDS.UsersDataTable dt_user = new UniqueDS.UsersDataTable();
ta_user.FillByUserID(dt_user, id);
Username_txt.Text = dt_user[0].Username;
Pass_txt.Text = Coding._Decoding(dt_user[0].Password);
Email_txt.Text = dt_user[0].Email;


بعد یه دکمه گذاشتم که کاربر بعد از ویرایش اطلاعات وقتی روی اون کلیک کرد اطلاعات ویرایش شده رو توی پایگاه داده ذخیره می کنه کد دکمه اینطوریه


try
{
UsersTableAdapter ta_user = new UsersTableAdapter();
int i= ta_user.UpdateWithId(Username_txt.Text, Coding._Encoding(Pass_txt.Text), Email_txt.Text, id);
stat.Text = "کاربر ویرایش شد!" + Environment.NewLine + "شما به صفحه ی قبل باز می گردید";
Timer1.Enabled = true;
}
catch (Exception er)
{
stat.BackColor = Color.Red;
stat.Text = "خطایی پیش آمده است" + Environment.NewLine + er.Message;
}



اما مشکلی که پیش میاد همیشه مقداری که موقع لود کردن صفحه توی textbox ها می زارم رو توی پایگاه داده ذخیره می کنه یعنی اگه من توی textbox اولم مقدار 1 رو بزارم وقتی که یه متن دیگه توش بنویسم وقتی می خوام مقدارش رو بخونم همون 1 رو برمیگردونه!
کسی می دونه جریان این چیه و چطوری میشه حلش کرد؟

aliyeh
سه شنبه 11 بهمن 1390, 13:51 عصر
دستوراتی رو که برای پر کردن textbox ها در قسمت لود صفحه نوشتید باید در شرط زیر قرار بدید:
If(!IsPostBack)
چون زمانیکه شما دکمه "ویرایش" رو کلیک می کنید، ابتدا صفحه مجدد لود میشه و بعد دستورات زیر دکمه اجرا میشه.بنابر این همون مقدارهای قبلی دوباره ذخیره میشن.
البته این لود مجدد با لود اولیه صفحه فرق داره و در اصطلاح پست بک (postback) اتفاق میفته. پس دستوراتی که لازمه فقط در لود ابتدایی صفحه اجرا بشن و در زمان پست بک نمی خواید که مجدد اجرا بشن رو باید در این شرط قرار بدید.

mohsen-unique
سه شنبه 11 بهمن 1390, 14:08 عصر
دستوراتی رو که برای پر کردن textbox ها در قسمت لود صفحه نوشتید باید در شرط زیر قرار بدید:
If(!IsPostBack)
چون زمانیکه شما دکمه "ویرایش" رو کلیک می کنید، ابتدا صفحه مجدد لود میشه و بعد دستورات زیر دکمه اجرا میشه.بنابر این همون مقدارهای قبلی دوباره ذخیره میشن.
البته این لود مجدد با لود اولیه صفحه فرق داره و در اصطلاح پست بک (postback) اتفاق میفته. پس دستوراتی که لازمه فقط در لود ابتدایی صفحه اجرا بشن و در زمان پست بک نمی خواید که مجدد اجرا بشن رو باید در این شرط قرار بدید.
خیلی ممنون اصلا حواسم به این نبود مشکل حل شد کد رو به این صورت تغییر دادم

id = Convert.ToInt32(Request.QueryString["ID"]);
if (!IsPostBack)
{

UsersTableAdapter ta_user = new UsersTableAdapter();
UniqueDS.UsersDataTable dt_user = new UniqueDS.UsersDataTable();
ta_user.FillByUserID(dt_user, id);
Username_txt.Text = dt_user[0].Username;
Pass_txt.Text = Coding._Decoding(dt_user[0].Password);
Email_txt.Text = dt_user[0].Email;
JQDatePicker1.Date = dt_user[0].ExpDate;
}