דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה בC#

עזרה בC#

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 5 כותבים 384 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • M מנותק
    M מנותק
    mekev
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי טבלה דינאמית (Datagridview) שמקבלת נתונים לפי שאילתה מSQL
    ואני מעוניין לקבל לתיבת טקסט (textbox) מידע שלא מופיע בתוצאת השאילתה
    אלא לקבל מידע מהSQL לפי בחירת התא/שורה בטבלה

    דוגמא:
    הטבלה מכילה עמודה 'מזהה', 'שם המוצר', 'כמות'
    ואני מעוניין בבחירת תא/שורה לקבל לתיבת טקסט את המידע 'שם הלקוח' שלא מופיע בתוצאת השאילתה המוצגת בטבלה

    מישהו יכול לעזור בתחביר?

    רחמיםר clickoneC 3 תגובות תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      השיב לmekev ב נערך לאחרונה על ידי
      #2

      @mekev תצרף לפה את קוד של מה שכבר עשית

      תגובה 1 תגובה אחרונה
      1
      • clickoneC מנותק
        clickoneC מנותק
        clickone
        השיב לmekev ב נערך לאחרונה על ידי
        #3

        @mekev מדובר על ווינפורם / WPF או ווב?

        הדרך הקלאסית היא, להאזין לאירוע בחירת שורה, ואז לפנות שוב לDB לפי המזהה ולקבל את הערך ואז להציג אותו.

        אם זה ווינפורם, אתה יכול לשים אותו גם כעמודה מוסתרת, ופשוט לשלוף מהעמודה ולהציג אותו לפי האינדקס.

        (עקרונית אפשר לעשות את זה גם בווב, אם זה לא נתון שחייב להיות מוחבא, אלא רוצים רק "לא להציג אותו" בטבלה.)

        אם תכתוב את הפלטפורמה, יהיה קל יותר לתת דוגמא ממשית

        בהצלחה

        אין טסט כמו פרודקשן.

        המייל שלי urivpn@gmail.com

        תגובה 1 תגובה אחרונה
        0
        • clickoneC מנותק
          clickoneC מנותק
          clickone
          השיב לmekev ב נערך לאחרונה על ידי
          #4

          @mekev ועוד שאלה, הפרטים שאתה אומר שכבר קיימים, מוצמדים ללקוח? או שהם נתונים לא קשורים ואתה צריך "להשיג" באיזו דרך מי הלקוח? (או האם מדובר במקרה שיש קשר ברור בין הלקוח לפריט - כגון פריטים בחשבונית)

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          M תגובה 1 תגובה אחרונה
          0
          • M מנותק
            M מנותק
            mekev
            השיב לclickone ב נערך לאחרונה על ידי
            #5

            @clickone
            מדובר על ווינפורם

            העדיפות כמובן על לקבל את הערך של ה'מזהה' בבחירת שורה - ולפנות לSQL לקבל את המידע הנוסף

            הקוד של השאילתה:
            SqlConnection conn = new SqlConnection("שם שרת");
            SqlCommand cmd = new SqlCommand("SQL שאילתת", conn);
            conn.Open();
            DataTable dt = new DataTable();
            using (SqlDataAdapter Sda = new SqlDataAdapter(cmd))
            {
            Sda.Fill(dt);
            conn.Close();
            }
            dataGridView.DataSource = dt;

            הקוד הקיים לתיבת טקסט לקבלת מידע מהתוצאה בטבלה:
            textBox.Text = (string)dataGridView.CurrentRow.Cells["שם מוצר"].Value;

            תגובה 1 תגובה אחרונה
            0
            • Aharon 0A מנותק
              Aharon 0A מנותק
              Aharon 0
              כתב ב נערך לאחרונה על ידי
              #6

              יש אירוע של בחירת שורה
              Winform כבר לא נתמך ע"י Microsoft. לעומת wpf שעדיין נתמך. (יש תמיכה ב net5), לגבי שאילתא מ db כדאי להשתמש entity framework יאפשר לך גמישות עם db.

              dovidD תגובה 1 תגובה אחרונה
              1
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                השיב לAharon 0 ב נערך לאחרונה על ידי dovid
                #7

                WinForms נכון לעכשיו נתמכת.

                @mekev תוסיף כזאת שורת קוד:

                dataGridView.SelectionChanged += (se, ev) =>
                {
                	var id = dataGridView.SelectedRows[0].Cells["מזהה"].Value;
                	var cmd = new SqlCommand("SELECT * FROM X WHERE מזהה = @id", conn);
                	cmd.Parameters.AddWithValue("id", id);
                	var reader = cmd.ExecuteReader();
                	if(reader.Read())
                	{
                		textBox.Text = reader["שם עמודה"].ToString() + " " + reader["שם עמודה2"].ToString();
                	}
                };
                

                לשם הנוחות בהסברה השתמשתי בפונקציית חץ, אבל תוכל לעשות פונקציה נפרדת לחלוטין.
                כמו"כ רישום האירוע הוא ע"י קוד במקום ע"י הדיזיינר (המעצב של הויזואל סטודיו ע"י יצירת אירוע בחלונית האירועים) יש לזה ייתרון שכל עוד לא התמלאו נתונים האירוע לא נרשם.

                בהצלחה.

                עריכה: כעת אני רואה שקראת לclose של הקונקשין אז צריך לפתוח אותה בקוד, או ליצור קונקשיין כל פעם.

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                dovidD תגובה 1 תגובה אחרונה
                1
                • dovidD מחובר
                  dovidD מחובר
                  dovid ניהול
                  השיב לdovid ב נערך לאחרונה על ידי
                  #8

                  קוד מתוקן לקוננקשיין חדש:

                  dataGridView.SelectionChanged += (se, ev) =>
                  {
                  	var id = dataGridView.SelectedRows[0].Cells["מזהה"].Value;
                  	using (var newCon = new SqlConnection(conn.ConnectionString))
                  	using (var cmd = new SqlCommand("SELECT * FROM X WHERE מזהה = @id", conn))
                  	{
                  		newCon.Open();
                  		
                  		cmd.Parameters.AddWithValue("id", id);
                  		var reader = cmd.ExecuteReader();
                  
                  		if (reader.Read())
                  			textBox.Text = reader["שם עמודה"].ToString() + " " + reader["שם עמודה2"].ToString();
                  
                  		newCon.Close();
                  	}
                  };
                  

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  1
                  • M מנותק
                    M מנותק
                    mekev
                    כתב ב נערך לאחרונה על ידי
                    #9

                    תודה לכל העוזרים!

                    אשמח להחכים:
                    בהמשך לדברי @mekev
                    איך אני מגדיר בשאילתה דינמית שמזינה dataGridView
                    שיהיה עמודה מוסתרת/בלתי מוצגת

                    dovidD תגובה 1 תגובה אחרונה
                    0
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      השיב לmekev ב נערך לאחרונה על ידי dovid
                      #10

                      @mekev
                      אני מבין מדבריך שאתה מעוניין שהעמודה כן תהיה בdataGridView (ויוכלו לגשת דרך Cell["hidden col"]) רק שלא תוצג.
                      במידה והבנתי אותך, התשובה היא שאין לזה קשר להגדרה בשאילה, אלא שאחרי המילוי כלומר שורה אחרי השורה dataGridView.DataSource = dt; להסתיר את העמודה:

                      dataGridView.Columns["sodi"].Visible = false;
                      

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • dovidD dovid העביר נושא זה מ-תכנות ב-

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום