Hur får man den att fatta att det är olika SQLsatser till resp DataGrid? Gert, "Hur får man den att fatta...." Var in och skulle skriva in problemet igår, men det kom inte någon ändra eller svara knapp på sidan. Vad jag menar är att om man inte kan efter varann ange ReadRecords()Kan man inte ha två eller flera DataGrid i samma formulär?
public class a_laget : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) ReadRecords();
}
private void ReadRecords()
{
OleDbConnection conn = null;
OleDbDataReader reader = null;
try
{
conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/Bowlingresultat.mdb"));
conn.Open();
string SqlCmd = "SELECT m.Namn,";
SqlCmd+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
SqlCmd+="SUM(r.Serier) AS Antser,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hsnitt,";
SqlCmd+="SUM(iif(H_B='H',r.serier,0)) AS Shemma,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bsnitt,";
SqlCmd+="SUM(iif(H_B='B',r.serier,0)) AS Sborta,";
SqlCmd+="ROUND(SUM(r.poang)/SUM(r.serier),2) AS Psnitt, MAX(r.resultat) AS Bästa,";
SqlCmd+="MIN(IIF(serier = 4,r.resultat,null)) AS Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE Omgang IN (SELECT DISTINCT TOP 3 Omgang FROM Resultat ORDER BY Omgang DESC)GROUP BY m.Namn,id ORDER BY 2 DESC";
OleDbCommand cmd = new OleDbCommand(SqlCmd, conn);
reader = cmd.ExecuteReader();
DataGrid1.DataSource = reader;
DataGrid1.DataBind();
}
finally
{
if (reader !=null) reader.Close();
if (conn !=null) conn.Close();
ReadRecordssista3();
}
}
private void ReadRecordssista3()
{
OleDbConnection conn = null;
OleDbDataReader readers3 = null;
try
{
conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/Bowlingresultat.mdb"));
conn.Open();
string Sista = "SELECT m.Namn,";
Sista+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
Sista+="SUM(r.Serier) AS Antser,";
Sista+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hsnitt,";
Sista+="SUM(iif(H_B='H',r.serier,0)) AS Shemma,";
Sista+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bsnitt,";
Sista+="SUM(iif(H_B='B',r.serier,0)) AS Sborta,";
Sista+="ROUND(SUM(r.poang)/SUM(r.serier),2) AS Psnitt, MAX(r.resultat) AS Bästa,";
Sista+="MIN(IIF(serier = 4,r.resultat,null)) AS Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE Omgang IN (SELECT DISTINCT TOP 3 Omgang FROM Resultat ORDER BY Omgang DESC)GROUP BY m.Namn,id ORDER BY 2 DESC";
OleDbCommand S3 = new OleDbCommand(Sista, conn);
readers3 = S3.ExecuteReader();
DataGrid2.DataSource = readers3;
DataGrid2.DataBind();
}
finally
{
if (readers3 !=null) readers3.Close();
if (conn !=null) conn.Close();
}
}
Sv: Kan man inte ha två eller flera DataGrid i samma formulär?
Du kanske skulle beskriva ditt problem - vad som händer (eller snarare inte händer), vad du försöker göra etc. Att bara klippa in lite kod och inte beskriva vad som sker är lönlöst.Sv: Kan man inte ha två eller flera DataGrid i samma formulär?
Tja man säger åt den att fatta ;-) Skoja..
Först så måste du ju ha två DataGriddar på sidan. Sedan två Querys, när du har det så skapar du troligen ett dataset med query ett mot respektive datagrid sedan gör du samma fast använder query 2 mot ett nytt dataset som du bilder mot andra griden.
Dvs.
Pseudo kod.
DataSet dateset1 = SqlCommand.ExecuteDataSet(query1...);
datagrid1.DataSOurce = dataset1;
datagrid1.DataBind();
DataSet dataset2 = SqlCommand.ExecuteDataset(query2....);
datagrid2.DataSource = dataset2;
datagrid2.DataBind();
Ta nu inte koden på allvar då den absolut inte kommer att fungera, använde den för att visa ett sätt du kan gå tillväga på.
Antar att det är så du vill göra? Läste inte din kod så noga bara lusade genom den, men det verkar vara uppbyggd på rätt tänk i alla fall, men orkade inte se om något var felkodat...
Fungerar den inte? eller vill du bara visa ett exempel för att undra om det verkligen går?
Om inte så är du välkommen att beskriva mer vad du är ute efter.
Mvh JohanSv:Kan man inte ha två eller flera DataGrid i samma formulär?
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) ReadRecords() , ReadRecordssista3(), Readrecordshost();
}
Jag löste det med att efter första ReadRecords när den stänger ner ange ReadRecordssista3();
Finns säker ett bättre sätt på det?
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) ReadRecords();
}
private void ReadRecords()
{
OleDbConnection conn = null;
OleDbDataReader reader = null;
try
{
conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/Bowlingresultat.mdb"));
conn.Open();
string SqlCmd = "SELECT m.Namn,";
SqlCmd+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
SqlCmd+="SUM(r.Serier) AS Antser,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hsnitt,";
SqlCmd+="SUM(iif(H_B='H',r.serier,0)) AS Shemma,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bsnitt,";
SqlCmd+="SUM(iif(H_B='B',r.serier,0)) AS Sborta,";
SqlCmd+="ROUND(SUM(r.poang)/SUM(r.serier),2) AS Psnitt, MAX(r.resultat) AS Bästa,";
SqlCmd+="MIN(IIF(serier = 4,r.resultat,null)) AS Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE Omgang IN (SELECT Omgang FROM Resultat WHERE Omgang <11 ORDER BY Omgang DESC)GROUP BY m.Namn,id ORDER BY 2 DESC";
OleDbCommand cmd = new OleDbCommand(SqlCmd, conn);
reader = cmd.ExecuteReader();
DataGrid1.DataSource = reader;
DataGrid1.DataBind();
}
finally
{
if (reader !=null) reader.Close();
if (conn !=null) conn.Close();
ReadRecordssista3();
}
}
private void ReadRecordssista3()
{
OleDbConnection conns3 = null;
OleDbDataReader readers3 = null;
try
{
conns3 = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/Bowlingresultat.mdb"));
conns3.Open();
string SqlCmd = "SELECT m.Namn,";
SqlCmd+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
SqlCmd+="SUM(r.Serier) AS Antser,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hsnitt,";
SqlCmd+="SUM(iif(H_B='H',r.serier,0)) AS Shemma,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bsnitt,";
SqlCmd+="SUM(iif(H_B='B',r.serier,0)) AS Sborta,";
SqlCmd+="ROUND(SUM(r.poang)/SUM(r.serier),2) AS Psnitt, MAX(r.resultat) AS Bästa,";
SqlCmd+="MIN(IIF(serier = 4,r.resultat,null)) AS Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE Omgang IN (SELECT DISTINCT TOP 3 Omgang FROM Resultat ORDER BY Omgang DESC)GROUP BY m.Namn,id ORDER BY 2 DESC";
OleDbCommand S3 = new OleDbCommand(SqlCmd, conns3);
readers3 = S3.ExecuteReader();
DataGrid2.DataSource = readers3;
DataGrid2.DataBind();
}
finally
{
if (readers3 !=null) readers3.Close();
if (conns3 !=null) conns3.Close();
ReadRecordsVar();
}
}
private void ReadRecordsVar()
{
OleDbConnection conn = null;
OleDbDataReader reader = null;
try
{
conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/Bowlingresultat.mdb"));
conn.Open();
string SqlCmd = "SELECT m.Namn,";
SqlCmd+="Round(avg(IIF(resultat is null,0,resultat)/IIF(serier is null,1,serier)),1) as Snitt,";
SqlCmd+="SUM(r.Serier) AS Antser,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hsnitt,";
SqlCmd+="SUM(iif(H_B='H',r.serier,0)) AS Shemma,";
SqlCmd+="(SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B') AS Bsnitt,";
SqlCmd+="SUM(iif(H_B='B',r.serier,0)) AS Sborta,";
SqlCmd+="ROUND(SUM(r.poang)/SUM(r.serier),2) AS Psnitt, MAX(r.resultat) AS Bästa,";
SqlCmd+="MIN(IIF(serier = 4,r.resultat,null)) AS Sämsta FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.Id = r.Spelare WHERE Omgang IN (SELECT Omgang FROM Resultat WHERE Omgang >10 ORDER BY Omgang DESC)GROUP BY m.Namn,id ORDER BY 2 DESC";
OleDbCommand cmd = new OleDbCommand(SqlCmd, conn);
reader = cmd.ExecuteReader();
DataGrid3.DataSource = reader;
DataGrid3.DataBind();
}
finally
{
if (reader != null) reader.Close();
if (conn != null) conn.Close();
}
}