protected void DynamicTableprozent(int Anlage, int Ort)
{
// Daten aus der Tabelle in ein DataTable einlesen
dtRatings = new DataTable();
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.Add("@Anlage", SqlDbType.Int);
sqlCmd.Parameters["@Anlage"].Value = Anlage;
sqlCmd.Parameters.Add("@Ort", SqlDbType.Int);
sqlCmd.Parameters["@Ort"].Value = Ort;
sqlCmd.CommandText = "GetAllAnlageRating";
sqlCon.Open();
sqlDR = sqlCmd.ExecuteReader();
for (int i = 0; i < sqlDR.FieldCount; i++)
{
dtRatings.Columns.Add(sqlDR.GetName(i));
}
object[] arrVal = new object[dtRatings.Columns.Count];
while (sqlDR.Read())
{
if (!sqlDR.IsDBNull(0))
{
for (int i = 0; i < sqlDR.FieldCount; i++)
{
arrVal[i] = sqlDR[i];
}
dtRatings.Rows.Add(arrVal);
}
}
sqlCon.Close();
DataColumn[] dtPK = new DataColumn[dtRatings.Columns.Count];
for (int p = 0; p < dtRatings.Columns.Count; p++)
dtPK[p] = dtRatings.Columns[p];
dtRatings.PrimaryKey = dtPK;
List<double> lstKV = new List<double>();
List<double> lstKA = new List<double>();
List<double> lstA = new List<double>();
foreach (DataRow dr in dtRatings.Rows)
{
if (!lstKV.Contains(Convert.ToDouble(dr["Voltage"])))
lstKV.Add(Convert.ToDouble(dr["Voltage"]));
if (!lstA.Contains(Convert.ToDouble(dr["RCurrent"])))
lstA.Add(Convert.ToDouble(dr["RCurrent"]));
}
lstKV.Sort();
lstA.Sort();
int[] rowspan = new int[lstKV.Count];
int zeile = 0;
int zelle = 0;
TableRow test = new TableRow();
TableCell testtc1 = new TableCell();
testtc1.BorderStyle = BorderStyle.Solid;
testtc1.BorderWidth = 1;
testtc1.BorderColor = System.Drawing.Color.Black;
testtc1.Text = "U(kV)";
test.Cells.Add(testtc1);
TableCell testtc2 = new TableCell();
testtc2.BorderStyle = BorderStyle.Solid;
testtc2.BorderWidth = 1;
testtc2.BorderColor = System.Drawing.Color.Black;
testtc2.Text = "I(kA)";
test.Cells.Add(testtc2);
for (int p = 0; p < lstA.Count; p++)
{
TableCell testc = new TableCell();
testc.BorderStyle = BorderStyle.Solid;
testc.BorderWidth = 1;
testc.BorderColor = System.Drawing.Color.Black;
testc.Text = lstA[p].ToString();
test.Cells.Add(testc);
}
tblprozent.Rows.Add(test);
for (int k = 0; k < lstKV.Count; k++)
{
lstKA.Clear();
foreach (DataRow dr in dtRatings.Rows)
{
if (Convert.ToDouble(dr["Voltage"]) == lstKV[k] & (!lstKA.Contains(Convert.ToDouble(dr["BreakingCurrent"]))))
lstKA.Add(Convert.ToDouble(dr["BreakingCurrent"]));
}
lstKA.Sort();
rowspan[k] = lstKA.Count;
for (int t = 0; t < lstKA.Count; t++)
{
TableRow tr = new TableRow();
tr.ID = "tr_" + k.ToString() + "_" + t.ToString();
tr.BorderStyle = BorderStyle.Solid;
tr.BorderWidth = 1;
if (t == 0)
{
TableCell tcKV = new TableCell();
tcKV.RowSpan = rowspan[k];
tcKV.BorderStyle = BorderStyle.Solid;
tcKV.BorderWidth = 1;
tcKV.BorderColor = System.Drawing.Color.Black;
tcKV.Text = lstKV[k].ToString();
tr.Cells.Add(tcKV);
}
TableCell tcKA = new TableCell();
tcKA.BorderStyle = BorderStyle.Solid;
tcKA.BorderWidth = 1;
tcKA.BorderColor = System.Drawing.Color.Black;
tcKA.Text = lstKA[t].ToString();
tr.Cells.Add(tcKA);
for (int i = 0; i < lstA.Count; i++)
{
TableCell tct = new TableCell();
tct.BorderStyle = BorderStyle.Solid;
tct.BorderWidth = 1;
tr.Cells.Add(tct);
}
tblprozent.Rows.Add(tr);
}
for (int j = 0; j < lstKA.Count; j++)
{
for (int i = 0; i < lstA.Count; i++)
{
if (dtRatings.Rows.Contains(new object[] { lstKV[k], lstKA[j], lstA[i] }))
{
TextBox txt = new TextBox();
txt.Width = 100;
zelle = j == 0 ? i + 2 : i + 1;
txt.ID = "txt_" + zeile.ToString() + "_" + zelle.ToString();
tblprozent.Rows[zeile + 1].Cells[zelle].Controls.Add(txt);
}
}
zeile++;
}
}
}