الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ برمجي

بدأه *areej* في 16 ديسمبر 2011 · 15 رد · 2,295 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

تظهرلي مشكله مو عارفه ليش مايتعرف على اداة تيكست بوكس

الكود هو :

 public void save_Anser()
    {
        string proj = Request.QueryString["pr_Id"];
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connectionstring2"].ConnectionString;
        conn.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "select Q_Id from Questions where Project_Id='" + proj + "'  order by Q_Id DESC ";
        SqlDataReader rd = default(SqlDataReader);
        rd = cmd.ExecuteReader();
        rd.Read();
        int id_q = 0;
        if (rd.HasRows)
        {
            rd.Close();
            id_q = (Int32)cmd.ExecuteScalar();

        }
        else
        {
            id_q = 1;
        }
        rd.Close();

        cmd.Connection = conn;

        for (int i = 1; i <= int.Parse(NuAns.SelectedItem.Value.ToString()); i++)
        {
            string ans = "Anser" + i.ToString();
            string aaaaa = ((TextBox)this.FindControl("Anser1")).Text;
            string id_ = id_q.ToString();
            string pro = proj.ToString();
           // string[] data = {ans1.Text,"0",id_q.ToString(),proj.ToString()};
           // b.insertRow("Ansers",data,4);
            //cmd.CommandText = "INSERT INTO Ansers (Anser1,Anser2,Q_Id,Project_Id) VALUES(@Anser1,@Anser2,@Q_Id,@Project_Id)";
            //cmd.Parameters.Clear();
            //cmd.Parameters.AddWithValue("Anser1", ans1);
            //cmd.Parameters.AddWithValue("Anser2", "0");
            //cmd.Parameters.AddWithValue("Q_Id", id_q);
            //cmd.Parameters.AddWithValue("Project_Id", proj);
            //cmd.ExecuteNonQuery();

        }
        conn.Close();

    }

نص الخطأ :

Object reference not set to an instance of an object.

سطر الخطأ :

string aaaaa = ((TextBox)this.FindControl("Anser1")).Text;
#3
TareqVB كتب:

يعني انه الاداة Anser1 غير موجودة في الصفحة مباشرة .

لذا نرجو وضع الكود الخاص بالاداة .

وهنا الحديث عن asp.net ؟

جزاك الله اخوي على الرد

غريب مع انو الأداة موجوده في نفس الصفحه

 <asp:TextBox ID="Anser1" runat="server" Visible="false"></asp:TextBox>

لم اعرف اين الخطأ؟

#4

مافي احد يقدر يساعدني في دي المشكله :(

أين المبرمجيين :( :(

#6

السلام عليكم

أختي جربي الكود دا

string aaaaa = (this.FindControl("Anser1") As TextBox).Text;
#7

اذا كان هذا داخل repeater عليكي فحص نوع السطر اذا كان header او item او edit

ارفقي كل الصفحة لنفهم اين المشكلة

Web Development
Imad M.Khatib
Asp.net , Ajax , MSSQL , VB.Net , C#.Net , Xml , DomHtml , JQuery , JavaScript , Json , LINQ

imad.khatib@hotmail.com

#8
TareqVB كتب:

المشكلة في Visible="false"

جربي بدل استخدام label استخدمي HiddenField .

مافهمت اين المشكله .. انا مو مستخدمه label .. انا مستخدمة textbox

hussain alqarni كتب:

السلام عليكم

أختي جربي الكود دا

string aaaaa = (this.FindControl("Anser1") As TextBox).Text;

الله يعطيك العافيه اخوي جربت الكود بس مازبط نفس المشكله

#9

الله يعطيكم العافيه

هذا الملف ارفقته ارجو مساعدتي

للأسف صفحة التصميم مو راضيه تترفع شكلو عشان الحجم :(

تقدروا تساعدوني بدون ما ارفقها !!

SystemQue.aspx.cs

#10

أختي بالنسبة للتكست بوكس اذا كان موجود في Master Page

جربي الكود التالي

string aaaaa = (this.master.FindControl("Anser1") as TextBox).Text;

لأنه انتي كاتبة (this) بدون تحديد اذا كان Master Page او Page

أتمنى اذا فيه إمكان إرفاق صفحة التصميم عشان نتأكد حتى لو كان الحجم كبير ارفعيه على (MediaFire) وحطي الرابط هنا

#11

عند وجود ماستر بيج يختلف الوضع لذا انصح بالنظر الى المقالة التالية :

http://www.west-wind.com/weblog/posts/2006/Apr/09/ASPNET-20-MasterPages-and-FindControl

وباختصار استخدمي الكود التالي :

private Control FindControlRecursive(Control Root, string Id)

{

    if (Root.ID == Id)

        return Root;



    foreach (Control Ctl in Root.Controls)

    {

        Control FoundCtl = FindControlRecursive(Ctl, Id);

        if (FoundCtl != null)

            return FoundCtl;

    }



    return null;

}

وللبحث عن اداة نستخدم

string aaaaa = (FindControlRecursive(this.Master,"Anser1") as TextBox).Text ;
#12

الله يعطيكم العافيه بس textbox مو موجود في الماستر موجود في نفس الصفحه

احاول ارفق صفحه التصميم

#13

ملف التصميم

ملف التصميم

#15

رفعت الملف ان شاء الله تقدروا تساعدوني

SystemQue.zip

#16

مربع النص موجود في عدة ادوات لذا اسهل طريقة هي التي ذكرتها لك سابقا

string aaaaa = (FindControlRecursive(this.Master,"Anser1") as TextBox).Text ;

فهل جربتها ؟؟؟؟

مواضيع مشابهة