مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohammadd

عضویت از 1395/12/08

مشکل در استفاده از User control درASP web form

  • شنبه 23 تیر 1397
  • 16:14
تشکر میکنم

سلام سوال قبلیم به خاطر عنوان نامناسب حذف شد

سوالم اینه من یه 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 نوشتم که اونور فراخوانی کردم ولی باز نشد

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 23 تیر 1397
  • 17:34

سلام 

درست متوجه شدم ؟ شما یه یوزر کنترل رو داخل یه یوزر کنترل دیگه استفاده کردید ؟ 

چرا ؟ 

اینکار باعث تداخل میشه 

کاربر سایت

mohammadd

عضویت از 1395/12/08

  • شنبه 23 تیر 1397
  • 22:00

نه اون کارو که نکردم master site دارم و چنتا صفحه و تو 5 از صفحه ها نیاز به لیست کاربران دارم برای ویرایش و سطح دسترسی دادن و... میخوام از یوزر کنترل استفاده کنم

برای این کار اومدم یه user control ساختم که لیست کاربرارو نشون میده منتهی ایرادی که داره داخل صفحه که میزارم درست عمل نمیکنه و همیشه یه مرحله عقبه مثلا کاربر و بار اول انتخاب میکنم چیزی نمیده بار دوم یکی دیگه انتخاب میکنم کاربر اولی رو میده 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 24 تیر 1397
  • 07:39

متوجه شدم

کد ها رو هم دیدم ولی مشکلی ندیدم

کد ها را Trace کنید تا ببینید در کدام خط مشکل داره

کاربر سایت

mohammadd

عضویت از 1395/12/08

  • یکشنبه 24 تیر 1397
  • 08:45

مشکل حل شد

راه حلشو مینویسم که اگه از دید دوستان درست بود بقیه هم استفاده کنن

تو این حلت 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 و تابع رو اجرا میکنه اینطوری تونستم بعد از طی مراحل مجدد از داخل صفحه به یوزر کنترل برم و مقدار برگردونم

حالا اگه دوستان نظر و ایده بهتری دارن بگن چون

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)