Ein InterviewFormular im Web Erfassen!

Dardanasi

Grünschnabel
Hallo Leute,
Bis heute habe ich mich mit suchen Helfen können doch jetzt weiss ich leider nicht mehr weiter. Damit ihr mein Problem versteht, erkläre ich kurz von meiner Aufgabe!
Meine Aufgabe ist es eine Website zu erstellen, wo unsere Mitarbeiter Interviews, (Fragebögen) die ausgefüllt sind, erfassen.
Dafür habe ich eine MS SQL Datenbank erstellt wo alle Fragen, Fragetypen und Antworten enthalten sind.

Die Seite muss ziemlich simpel und vor allem dem Fragebogen ähnlichen.
Ein Fragebogen kann bis zu 4 Interviews enthalten.
Eine Frage vom Typ 1, hat eine Antwort. z.B. Ja, Nein, weiss nicht. (RadioButtonList)
Eine Frage vom Typ 2, hat eine oder Mehrere Antworten (CheckBoxList)
Dann gibt es noch den Sprungfilter. Wenn Antowort "X" Ausgewählt ist, springe zu Frage "Y".
Diese Filter ist aber bereits in der Tabelle Antworten vorhanden. D.h. dort sind alle mögliche Antworten zu jede Frage vorhanden und die zugehörige sprungID.

So um mir die Sache zu vereinfachen habe ich ein View im SQL erstellt der mir alle Nötigen Werte liefert.

Eine Notlösung hätte ich schon, aber es muss doch einfacher gehen als 20 Tabellen mit alle AntwortIDs im Designer zu malen?

Also versuche ich das Ganze zu Dynamisieren.
Als Erstes frage ich ab, viewiele Interviews der Fragebogen enthält.
RadioButtonList = anzahl Interviews!

Dann habe ich ein Panel erstellt. mit folgenden inhalt:
Label1 = Frage.
Label2 = Antwort.
Tabelle = Antworten zu den Interviews.

und ein Button = nächste Frage.

Ich habe ein SQLDataReader mit ein Parameter erstellt. Parameter = frageID
der Liefert mir die Frage, Antworten und die SprungID, also nächste FrageID.

hier die Funktion:
protected void erstelleFragen(int frageID)
{
string Select = "SELECT [fr_nummer],[th_id], [frage], [antwort], [ant_id], [sprung_id], [fr_info], [fr_typ], [th_name], [offeneFrage], [endInterview]"+
"FROM [V_AntwortenZuFragen]"+
"WHERE ([fr_id] = @frageID );";

string constring = ConfigurationManager.ConnectionStrings["connSQL"].ConnectionString;
using (SqlConnection connection = new SqlConnection(constring))
{
connection.Open();
using (SqlCommand command = new SqlCommand(Select, connection))
{
command.CommandType = CommandType.Text;
command.Parameters.Add("@frageID", SqlDbType.Int, 4).Value = frageID;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lblThema.Text = reader.GetValue(8).ToString();
lblFrage.Text = reader.GetValue(0).ToString() + ". " + reader.GetValue(1).ToString() + ". " + reader.GetValue(2).ToString();
lblFrageInfo.Text = reader.GetValue(6).ToString();
// Create new row and add it to the table.

RadioButton rbtnListAntworten = new RadioButton();
//dieser Wert ist leider Fallsch, ich müsste da ein Count haben der aufzählt, wieviele Antworten hat diese Frage;
int anzahlAntowrten = Convert.ToInt32(reader.GetValue(0));

TableRow tRow = new TableRow();

tblAntworten.Rows.Add(tRow);
for (int cellCnt = 1; cellCnt <= anzahlAntowrten; cellCnt++)
{
// Create a new cell and add it to the row.
TableCell tCell = new TableCell();

tCell.Controls.Add(rbtnListAntworten);
rbtnListAntworten.Text += reader.GetValue(3).ToString();
tRow.Cells.Add(tCell);
}
}
reader.Close();
}
}
connection.Close();
}
}​

Diese Funktion, bis auf den Counter den ich nicht gelöst habe, funktioniert. Für die Fragen mit dem CheckBox kann ich durch eine if anweisung lösen. Was ich aber nicht hinkriege ist die Auffüllung mit den Anzahl Interviews.
Ich habe einen SelectIndexChangeg Event der mir den Value liefert, aber wie gebe ich dies in der Tabelle! Dieser müsste eigendlich nur die Tabellen Celle wo die RadioButonList enthaltet kopieren.

Ich hoffe ich hab da nicht zuviel geschriben, ich wusste nicht wie ich dies verkürzen konnte.
Für jeden Tipp bin ich euch sehr dankbar
Freundliche Grüsse dardanasi
 

Neue Beiträge

Zurück