سلام سوال قبلیم به خاطر عنوان نامناسب حذف شد
سوالم اینه من یه UserControl دارم داخلش یه لیست کاربران ساختم که داخل هر ستون یه دکمه هست که آیدی کاربر رو بر میگردونه
تا اینجا همه چی خوب و گل و بلبل بود تا اینکه انداختمش تو User control و الان مشکل اینه بار اول که رو دکمه کلیلک میکنم هیچ مقداری بهم نشون نمیده ولی بار دوم که میزنم مقدار کلیک بار اول رو میده
و این داستان یه پله عقب موندن ادامه داره
protected void Page_Load(object sender, EventArgs e) { table(); } private void table() { cmd.Connection = con; cmd.CommandType = CommandType.Text; cmd.CommandText = "select top 10 * from Profile"; da = new SqlDataAdapter(cmd); da.Fill(ds); con.Open(); cmd.ExecuteNonQuery(); con.Close(); //##################################################################### //##################################################################### if (!object.Equals(ds.Tables[0], null)) { string input_Name, input_ID; if (ds.Tables[0].Rows.Count > 0) { for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { if (i % 2 == 0) htmlTable.Append("<tr>"); else htmlTable.Append("<tr class='tr_color'>"); Button ButtonChange = new Button(); ButtonChange.Text = "انتخاب"; ButtonChange.ID = ds.Tables[0].Rows[i][1].ToString(); ButtonChange.CssClass = "display_block"; ButtonChange.Click += new EventHandler(test_click); DBDataPlaceHolder1.Controls.Add(ButtonChange); input_ID = ButtonChange.ClientID; input_Name = ButtonChange.NamingContainer.UniqueID + "$" + ds.Tables[0].Rows[i][1]; htmlTable.Append("<th>" + (i + 1) + "</th>"); htmlTable.Append("<td>" + ds.Tables[0].Rows[i][2] + "</td>"); htmlTable.Append("<td>" + ds.Tables[0].Rows[i][3] + "</td>"); htmlTable.Append("<td>" + ds.Tables[0].Rows[i][4] + "</td>"); htmlTable.Append("<td>" + ds.Tables[0].Rows[i][5] + "</td>"); htmlTable.Append("<td>" + ds.Tables[0].Rows[i][6] + "</td>"); htmlTable.Append("<th>"); htmlTable.Append("<input type='submit' name='" + input_Name + "' value='انتخاب' id='" + input_ID + "' class='btn'/>"); htmlTable.Append("</th>"); htmlTable.Append("</tr>"); //sss(ds.Tables[0].Rows[i][1].ToString()); } DBDataPlaceHolder.Controls.Add(new Literal { Text = htmlTable.ToString() }); } } } public void sss(string s) { Button ButtonChange = new Button(); ButtonChange.Text = "انتخاب"; ButtonChange.ID = s; ButtonChange.CssClass = "display_block"; ButtonChange.Click += new EventHandler(test_click); DBDataPlaceHolder1.Controls.Add(ButtonChange); string str = ButtonChange.ClientID; string str2 = ButtonChange.NamingContainer.UniqueID; } private void test_click(object sender, EventArgs e) { Button b = sender as Button; Label111.Text = b.ID; List_ID2 = Encript.AES_Encrypt(b.ID); } public void qq() { List_ID = List_ID2; }
این تکه کد یوزر کنترل که نوشتم و اونور فعلا فقط میخوام داخل یکی Lable نشون بده و داخل فرم لود نوشتم lable مقدارش مساوی مقداری بشه که اونور دارم و اونورم یه متغییر public static string List_ID تعریف کردم
ممنون میشم راهنمایی کنید حتی تابع qq نوشتم که اونور فراخوانی کردم ولی باز نشد
سلام
درست متوجه شدم ؟ شما یه یوزر کنترل رو داخل یه یوزر کنترل دیگه استفاده کردید ؟
چرا ؟
اینکار باعث تداخل میشه
نه اون کارو که نکردم master site دارم و چنتا صفحه و تو 5 از صفحه ها نیاز به لیست کاربران دارم برای ویرایش و سطح دسترسی دادن و... میخوام از یوزر کنترل استفاده کنم
برای این کار اومدم یه user control ساختم که لیست کاربرارو نشون میده منتهی ایرادی که داره داخل صفحه که میزارم درست عمل نمیکنه و همیشه یه مرحله عقبه مثلا کاربر و بار اول انتخاب میکنم چیزی نمیده بار دوم یکی دیگه انتخاب میکنم کاربر اولی رو میده
متوجه شدم
کد ها رو هم دیدم ولی مشکلی ندیدم
کد ها را Trace کنید تا ببینید در کدام خط مشکل داره
مشکل حل شد
راه حلشو مینویسم که اگه از دید دوستان درست بود بقیه هم استفاده کنن
تو این حلت 3تا page داریم :
1 - sitemaster
2- DefaultPage
3 - UserControl
اتفاقی که میوفته اینه که اول DefaultPage لود میشه و کد هاش اجرا میشه بعد sitemaster هست که اجرا میشه و در آخر UserControl پس جواب UserControl به دست ما نمیرسه چرا که اول باید UserControl بعد DefaultPage
برای همین تو DefaultPage یه تابع نوشتم
protected override void OnPreRender(EventArgs e) { { UserControl.qq(); } }
که بعد از اجرای هر سه تا page مجدد میره داخل DefaultPage وتابع qq که داخل UserControl و تابع رو اجرا میکنه اینطوری تونستم بعد از طی مراحل مجدد از داخل صفحه به یوزر کنترل برم و مقدار برگردونم
حالا اگه دوستان نظر و ایده بهتری دارن بگن چون
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)