2016-10-19 1 views
0

Ich verwende Infragistics WebDataGrid in diesem ziemlich großen Projekt. Was passiert, wenn ein Benutzer 2 Daten auswählt und eine Defektnummer der Baugruppennummer in mindestens einem von 10 WebDatagrids angezeigt wird. Die meiste Zeit gibt es Defekt Informationen in 2 oder mehr. Ich vergleiche Ergebnisse mit einer alten VB.NET Windows Forms-Anwendung. Ich kann den SP erfolgreich ausführen und Ergebnisse erhalten, jedoch wird nur ein Datagrid mit Ergebnissen gefüllt und nicht andere Grids, die Informationen in ihnen haben sollten. Ich habe Verbindungsdetails aus Sicherheitsgründen entfernt. Ich schätze die Hilfe im Voraus.C# -Daten werden nicht durch DataGrid SQL SP

C# -Code private void MessageBox (string msg) { Page.Controls.Add (neu LiteralControl ( "window.alert ('" + msg.Replace ("'", "\ '") + "')")); }

  private void getDefects(string workArea, WebDataGrid webDG) 
      { 
      if (wdpStartDate.Text == "" || wdpEndDate.Text == "") 
      { 
      MessageBox("You must provide values for Start Date and End Date!"); 
      } 
      else 
      { 
      //Create a connection to the SQL Server on IIS01. 

      //Establishes the command structure for the stored procedure Top5Defects. 
      SqlCommand cmd = new SqlCommand("dbo.Top5Defects", iis01Connection); 
      cmd.CommandType = CommandType.StoredProcedure; 

      //Establishes the required parameters to pass to the stored procedure. 
      cmd.Parameters.AddWithValue("@StartDate", wdpStartDate.Date.ToShortDateString()); 
      cmd.Parameters.AddWithValue("@EndDate", wdpEndDate.Date.ToShortDateString()); 
      cmd.Parameters.AddWithValue("@Assembly", Assemblies.CurrentValue); 
      cmd.Parameters.AddWithValue("@WorkArea", workArea); 
      iis01Connection.Open(); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      webDG.DataSource = dr; 
      webDG.DataBind(); 
      } 
      } 

      public void GetDefectHistory() 
      { 

      getDefects("SL", wdgSL); 
      getDefects("PW", wdgPW); 
      getDefects("SMT", wdgSMT); 
      getDefects("SS/Wave", wdgSSWV); 
      getDefects("AI", wdgAI); 
      getDefects("ICT", wdgICT); 
      getDefects("FT", wdgFT); 
      getDefects("CC", wdgCC); 
      getDefects("EM", wdgEM); 
      getDefects("TC", wdgTC); 
      } 

      protected void btnResults_Click(object sender, EventArgs e) 
      { 
      GetDefectHistory(); 
      } 

Stored Procedure USE [EMSDatabase] GO /****** Objekt:. StoredProcedure [dbo] [Top5Defects] Script Datum: 2016.10.18 10.15: 48 Uhr ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO - ========================== ================== - Autor: Trent Adams> - Erstellungsdatum: 13.10.2016 - Beschreibung: Eine gespeicherte Prozedur für die EMS-Datenbank Top Defects - ================================================== ======== ALTER PROCEDURE [DBO]. [Top5Defects] @StartDate DATETIME-, @EndDate DATETIME-, @Assembly VARCHAR (50), @WorkArea VARCHAR (50)

  AS 
      --Declare @WorkArea as VARCHAR(50) 
      --Set @WorkArea ='SL' 

      BEGIN 
      -- SET NOCOUNT ON added to prevent extra result sets from 
      -- interfering with SELECT statements. 
      SET NOCOUNT ON; 

      SELECT Top 5 Sum(Quantity) AS 'Sum', DefectCode As Defect, PartInvolved AS Part 
      FROM EMSDefectHistory 
      WHERE DateEntered Between @StartDate AND @EndDate 
       AND Assembly = @Assembly 
       AND WorkArea = @WorkArea 
      GROUP BY DefectCode, PartInvolved 
      ORDER BY Sum(Quantity) DESC 
      END 

Antwort

0

Es stellt sich heraus, dass ich beim Lesen des VB.NET-Codes blind war. Da der Funktionstest (FT) und der In-Circuit-Test (ICT) verschiedene Tabellen verwenden, musste ich eine Methode für diese FT/ICT erstellen.