ورود

View Full Version : سوال: تغییر مقدار متغیر در SelectedIndexChanged



maxpayn2
سه شنبه 29 دی 1388, 09:38 صبح
سلام
در رویداد SelectedIndexChanged یک DropDoenList مقدار متغیری از توع int را که در کلاس اصلی (قبل از Page_Load) تعریف کردم ، عوض می کنم و میخوام از مقدار این متغیر در ButtonSubmit_Click استفاده کنم ، ولی مقدارش 0 میشه

چیکار کنم ؟

maxpayn2
سه شنبه 29 دی 1388, 09:55 صبح
برادر chabok ، تاپیک قبلی رو که پاک کردی ، لااقل به این یکی جواب بده

Saber_Fatholahi
سه شنبه 29 دی 1388, 10:51 صبح
دوست عزیز احتمال میدم توی PageLoad این کارو کردی و DropDownList پر میکینی برای همین وقتی روی دکمه کلیک می کنی اول PageLoad اجرا میشه و دوباره بایند میشه در نتیجه مقدار گزینه اتخابی صفر بر میگردونه
برای رفع مشکلت توی PageLoad باید اینجوری عمل کنی

if (!Page.IsPostBack)
{
کد های بایند کردن DropDownList
}
موفق باشید

maxpayn2
سه شنبه 29 دی 1388, 10:58 صبح
DropDownList ها رو دقیقا همونطوری که شما فرمودید پر میکنم ، اشکال از اینجا نیست ، این هم کد :




protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["user_name"].ToString() == "")
{
Session["url"] = "~/AddClerck.aspx";
Response.Redirect("~/Login.aspx");
}

Site1 MyMaster = Page.Master as Site1;
SqlConnection cnn = new SqlConnection();

try
{
DropDownListDegree.Items.Clear();
DropDownListDegree.Items.Add("");

string cnnst = ConfigurationManager.ConnectionStrings["Gozinesh_ConnectionString"].ToString();
cnn.ConnectionString = cnnst;
cnn.Open();
SqlCommand cmd = new SqlCommand("select_degree", cnn);
cmd.CommandType = CommandType.StoredProcedure;

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
DropDownListDegree.Items.Add(dr[0].ToString());
}

cnn.Close();
}
catch (Exception ex)
{
MyMaster.LabelMessageText = ex.Message;
MyMaster.LabelMessageVisible = true;
}
finally
{
cnn.Close();
}
}
}

Saber_Fatholahi
سه شنبه 29 دی 1388, 11:00 صبح
خوب یه کار دیگه بکن برنامه تو توی حالت Debug اجرا کن و توی کدات BraekPoint اذار ببین کجا مقدار اتخابی شما صفر میشه
موفق باشی

maxpayn2
سه شنبه 29 دی 1388, 11:49 صبح
سلام
در رویداد SelectedIndexChanged یک DropDoenList مقدار متغیری از توع int را که در کلاس اصلی (قبل از Page_Load) تعریف کردم ، عوض می کنم و میخوام از مقدار این متغیر در ButtonSubmit_Click استفاده کنم ، ولی مقدارش 0 میشه



غیر از این DropDownList چند تا دیگه هم دارم ، به محض اینکه یکی دیگه SelectedIndexChanged میشه قبلی 0 میشه

مهدی کرامتی
سه شنبه 29 دی 1388, 13:07 عصر
مشکل شما اینه که می خواهید مقدار مورد نظرتون رو در جایی نگه دارید که در فاصله دو PostBack وجود خارجی ندارد. عطف به موضوع چرخه حیات صفحات (Page Life Cycle) نمونه ای از کلاس Code Behind که برای پاسخگویی به رویدادهای صفحه استفاده می شود در حین هر Request از صفحه به وجود آمده و در پایان Response آن نمونه از بین می رود. بنابراین هر مقداری که در بدنه کلاس نگهداری کنید مشمول این نابودی خواهد شد.

راه حل آن است که مقدار مورد نظر را در محلی که ماندگاری داشته باشد (مانند ViewState، HiddenField، یا Session) نگهداری کنید.

maxpayn2
سه شنبه 29 دی 1388, 13:28 عصر
شکرا جزیلا