Forum: ASP.NET |
Thema:
Re: Usercontrols dynamisch einer Webform hinzufügen |
Von:
G. Guest (
08.03.2004 12:22) |
Hier der gesamte Code den ich bisher geschrieben habe. Einige Sachen betreffen bereits das Programm an sich (SQL Tiele) - dies einfach nicht zu beachten.
Ich habe alle Kommentare mit "Kommentar" ersetzt.
Public Class EditColumn
Inherits System.Web.UI.Page
Protected WithEvents DropDownList1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents btCancel As System.Web.UI.WebControls.Button
Protected WithEvents Table1 As System.Web.UI.WebControls.Table
Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents tbColumnName As System.Web.UI.WebControls.TextBox
Protected WithEvents tbDefaultValue As System.Web.UI.WebControls.TextBox
Protected WithEvents cbNecessary As System.Web.UI.WebControls.CheckBox
Protected WithEvents tbHeight As System.Web.UI.WebControls.TextBox
Protected WithEvents tbWidth As System.Web.UI.WebControls.TextBox
Protected WithEvents tbMaxInput As System.Web.UI.WebControls.TextBox
Protected WithEvents cbShowInHTML As System.Web.UI.WebControls.CheckBox
Protected WithEvents tbDescription As System.Web.UI.WebControls.TextBox
Protected WithEvents rfvColumnName As System.Web.UI.WebControls.RequiredFieldValidator
Protected WithEvents rvMaxInput As System.Web.UI.WebControls.RangeValidator
Protected WithEvents rvWidth As System.Web.UI.WebControls.RangeValidator
Protected WithEvents rvHeight As System.Web.UI.WebControls.RangeValidator
Protected WithEvents lbItems As System.Web.UI.WebControls.ListBox
Protected WithEvents btSave As System.Web.UI.WebControls.Button
Protected WithEvents ValidationSummary1 As System.Web.UI.WebControls.ValidationSummary
Protected WithEvents tbListValue As System.Web.UI.WebControls.TextBox
#Region " Vom Web Form Designer generierter Code "
"Kommentar"Dieser Aufruf ist für den Web Form-Designer erforderlich.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
"Kommentar"CODEGEN: Diese Methode ist für den Web Form-Designer erforderlich
"Kommentar"Verwenden Sie nicht den Code-Editor zur Bearbeitung.
InitializeComponent()
End Sub
#End Region
"Kommentar"Public alList As ArrayList
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim drData As DataRow
Dim objHTMLType As ListItem
Dim Test As Object
For Each Test In viewstate.Keys
Response.Write(Test & " " & viewstate.Item(Test) & "<br>")
Next
"Kommentar" Hier Benutzercode zur Seiteninitialisierung einfügen
InitObjects()
If Not Page.IsPostBack Then
"Kommentar"***** CREATE OBJECTS *************
If Request.QueryString("action") = "create" Then
viewstate.Add("EditMode", False)
If Len(Trim(Request.QueryString("ID"))) > 0 Then
viewstate.Add("AppendColumn", True)
viewstate.Add("ProjectID", Request.QueryString("ID"))
Else
viewstate.Add("AppendColumn", False)
End If
ElseIf Len(Trim(Request.QueryString("ID"))) > 0 Then
viewstate.Add("EditMode", True)
viewstate.Add("EditID", Request.QueryString("ID"))
End If
If viewstate("EditMode") Then
drData = ADO.SingleRowSelectDR("SELECT * FROM Project_Table WHERE MandatorID = " & Session("MandatorID") & " AND ID = " & viewstate("EditID"))
For Each objHTMLType In DropDownList1.Items
If objHTMLType.Value = drData("HTMLType") Then
objHTMLType.Selected = True
Exit For
End If
Next
tbColumnName.Text = drData("ColumnName")
tbDefaultValue.Text = drData("DefaultValue")
cbNecessary.Checked = drData("Necessary")
tbHeight.Text = drData("Height")
tbWidth.Text = drData("Length")
tbMaxInput.Text = drData("MaxInput")
cbShowInHTML.Checked = drData("ShowInHTML")
tbDescription.Text = drData("Description")
End If
DropDownList1.SelectedIndex = 0
DropDownList1_SelectedIndexChanged(Nothing, Nothing)
End If
btCancel.Attributes.Add("onclick", "window.close();")
End Sub
Private Sub InitObjects()
"Kommentar"**** <OBJECT VALUES>
"Kommentar"** Dropdownlist
If Not Page.IsPostBack Then
DropDownList1.Items.Clear()
DropDownList1.Items.Add(New ListItem("Checkbox", Constants.HTMLType.checkbox))
DropDownList1.Items.Add(New ListItem("Datum", Constants.HTMLType.dateinput))
DropDownList1.Items.Add(New ListItem("Datum + Zeit", Constants.HTMLType.datetime))
DropDownList1.Items.Add(New ListItem("Bescheibungsfeld", Constants.HTMLType.label))
DropDownList1.Items.Add(New ListItem("Liste", Constants.HTMLType.listbox))
DropDownList1.Items.Add(New ListItem("Bild", Constants.HTMLType.picture))
DropDownList1.Items.Add(New ListItem("Radiobutton", Constants.HTMLType.radio))
DropDownList1.Items.Add(New ListItem("Textfeld", Constants.HTMLType.textbox))
DropDownList1.Items.Add(New ListItem("Datei-Upload", Constants.HTMLType.upload))
End If
"Kommentar"DropDownList1.DataSource = alList
"Kommentar"DropDownList1.DataBind()
"Kommentar"**ColumnName
tbColumnName = New TextBox()
tbColumnName.ID = "tbColumnName"
tbColumnName.CssClass = "lightInput"
"Kommentar"**DefaultValue
tbDefaultValue = New TextBox()
tbDefaultValue.ID = "tbDefaultValue"
tbDefaultValue.CssClass = "LightInput"
tbDefaultValue.Width = New Unit(120, UnitType.Pixel)
"Kommentar"**Necessary
cbNecessary = New CheckBox()
cbNecessary.ID = "cbNecessary"
cbNecessary.CssClass = "Lightinput"
"Kommentar"**Height
tbHeight = New TextBox()
tbHeight.ID = "tbHeight"
tbHeight.CssClass = "lightInput"
tbHeight.MaxLength = 3
tbHeight.Width = New Unit(50)
"Kommentar"**Width
tbWidth = New TextBox()
tbWidth.ID = "tbWidth"
tbWidth.CssClass = "LightInput"
tbWidth.MaxLength = 3
tbWidth.Width = New Unit(50)
"Kommentar"**MaxInput
tbMaxInput = New TextBox()
tbMaxInput.ID = "tbMaxInput"
tbMaxInput.CssClass = "LightInput"
tbMaxInput.MaxLength = 4
tbMaxInput.Width = New Unit(50)
"Kommentar"**ShowInHTML
cbShowInHTML = New CheckBox()
cbShowInHTML.ID = "cbShowInHTML"
cbShowInHTML.CssClass = "lightInput"
"Kommentar"**Description
tbDescription = New TextBox()
tbDescription.ID = "tbDescription"
tbDescription.CssClass = "lightinput"
tbDescription.TextMode = TextBoxMode.MultiLine
tbDescription.Width = New Unit(250)
tbDescription.Height = New Unit(50)
"Kommentar"**Listbox Items
lbItems = New ListBox()
lbItems.ID = "lbItems"
lbItems.CssClass = "LightInput"
lbItems.Width = New Unit(150)
lbItems.Height = New Unit(80)
"Kommentar"**ListValue
tbListValue = New TextBox()
tbListValue.ID = "tbListValue"
tbListValue.CssClass = "LightInput"
tbListValue.Width = New Unit(100)
"Kommentar"*** Validation Controls BEGIN
"Kommentar"**ColumnName
rfvColumnName = New RequiredFieldValidator()
rfvColumnName.ID = "rfvColumnName"
rfvColumnName.Display = ValidatorDisplay.None
rfvColumnName.ErrorMessage = "Sie müssen einen Spaltennamen eingeben"
rfvColumnName.ControlToValidate = "tbColumnName"
"Kommentar"**Height
rvHeight = New RangeValidator()
rvHeight.ID = "rvHeight"
rvHeight.ErrorMessage = "Der Wert bei "Kommentar"Höhe"Kommentar" muss im Bereich zwischen 0-99 liegen"
rvHeight.Display = ValidatorDisplay.None
rvHeight.ControlToValidate = "tbHeight"
rvHeight.MinimumValue = "0"
rvHeight.MaximumValue = "99"
"Kommentar"**Width
rvWidth = New RangeValidator()
rvWidth.ID = "rvWidth"
rvWidth.ErrorMessage = "Der Wert bei "Kommentar"Breite"Kommentar" muss im Bereich zwischen 0-99 liegen"
rvWidth.Display = ValidatorDisplay.None
rvWidth.ControlToValidate = "tbWidth"
rvWidth.MinimumValue = "0"
rvWidth.MaximumValue = "99"
"Kommentar"**MaxInput
rvMaxInput = New RangeValidator()
rvMaxInput.ID = "rvMaxInput"
rvMaxInput.ErrorMessage = "Der Wert bei "Kommentar"Maximalwert"Kommentar" muss im Bereich zwischen 0-8000 liegen"
rvMaxInput.Display = ValidatorDisplay.None
rvMaxInput.ControlToValidate = "tbMaxInput"
rvMaxInput.MinimumValue = "0"
rvMaxInput.MaximumValue = "8000"
"Kommentar"*** Validation Controls END
"Kommentar"**** <END OBJECT VALUES>
End Sub
Public Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
Dim objItem As ListItem
"Kommentar" InitObjects()
Table1.Rows.Clear()
objItem = DropDownList1.SelectedItem
Table1.Rows.Add(New cRows.LabelInput("Name:", tbColumnName, rfvColumnName))
Table1.Rows.Add(New cRows.LabelInput("Anzeigen:", cbShowInHTML))
Table1.Rows.Add(New cRows.LabelInput("Beschreibung:", tbDescription))
Select Case objItem.Value
Case Constants.HTMLType.checkbox
Table1.Rows.Add(New cRows.LabelInput("Standardwert:", tbDefaultValue))
Case Constants.HTMLType.dateinput
Table1.Rows.Add(New cRows.LabelInput("Notwendig:", cbNecessary))
Table1.Rows.Add(New cRows.DateInput("Standardwert:", tbDefaultValue))
Case Constants.HTMLType.datetime
Table1.Rows.Add(New cRows.LabelInput("Notwendig:", cbNecessary))
Table1.Rows.Add(New cRows.DateInput("Standardwert:", tbDefaultValue))
Case Constants.HTMLType.label
Case Constants.HTMLType.listbox
Table1.Rows.Add(New cRows.LabelInput("Standardwert:", tbDefaultValue))
Table1.Rows.Add(New cRows.ListInput(tbListValue, lbItems, Me))
Case Constants.HTMLType.picture
Table1.Rows.Add(New cRows.LabelInput("Notwendig:", cbNecessary))
Table1.Rows.Add(New cRows.LabelInput("Breite:", tbWidth, rvWidth))
Case Constants.HTMLType.radio
Table1.Rows.Add(New cRows.LabelInput("Standardwert:", tbDefaultValue))
Table1.Rows.Add(New cRows.ListInput(tbListValue, lbItems, Me))
Case Constants.HTMLType.textbox
Table1.Rows.Add(New cRows.LabelInput("Standardwert:", tbDefaultValue))
Table1.Rows.Add(New cRows.LabelInput("Breite:", tbWidth, rvWidth))
Table1.Rows.Add(New cRows.LabelInput("Höhe:", tbHeight, rvHeight))
Table1.Rows.Add(New cRows.LabelInput("Notwendig:", cbNecessary))
Table1.Rows.Add(New cRows.LabelInput("Maximalwert:", tbMaxInput, rvMaxInput))
Case Constants.HTMLType.upload
Table1.Rows.Add(New cRows.LabelInput("Notwendig:", cbNecessary))
Table1.Rows.Add(New cRows.LabelInput("Breite:", tbWidth, rvWidth))
Case Else
Throw New Exception("Typ wurde nicht erkannt")
End Select
End Sub
Public Sub AddItem(ByVal sender As Object, ByVal e As System.EventArgs)
If tbListValue.Text.Trim.Length > 0 Then
If IsNothing(lbItems.Items.FindByText(tbListValue.Text.Trim)) Then
lbItems.Items.Add(New ListItem(tbListValue.Text.Trim))
End If
End If
tbListValue.Text = ""
lbItems.ClearSelection()
DropDownList1_SelectedIndexChanged(Nothing, Nothing)
End Sub
Public Sub RemoveItem(ByVal sender As Object, ByVal e As System.EventArgs)
If lbItems.SelectedIndex > -1 Then
lbItems.Items.Remove(lbItems.SelectedItem)
lbItems.ClearSelection()
End If
DropDownList1_SelectedIndexChanged(Nothing, Nothing)
End Sub
Private Sub btSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btSave.Click
Dim strSQL As String
Dim objItem As ListItem
Dim objListItem As ListItem
Dim alData As New ArrayList()
Dim alColumns As ArrayList
Dim i As Integer
objItem = DropDownList1.SelectedItem
If viewstate("EditMode") Then
alData.Add(New CustomParameter("@ColumnName", tbColumnName.Text.Trim))
alData.Add(New CustomParameter("@ShowInHTML", cbShowInHTML.Checked))
alData.Add(New CustomParameter("@Description", tbDescription.Text))
strSQL = "UPDATE Project_Table SET ColumnName = @ColumnName,ShowInHTML = @ShowInHTML,Description = @Description"
Select Case objItem.Value
Case Constants.HTMLType.checkbox
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
strSQL += ", DefaultValue = @DefaultValue"
Case Constants.HTMLType.dateinput
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
strSQL += ", DefaultValue = @DefaultValue, Necessary = @Necessary"
Case Constants.HTMLType.datetime
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
strSQL += ", DefaultValue = @DefaultValue, Necessary = @Necessary"
Case Constants.HTMLType.label
Case Constants.HTMLType.listbox
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
strSQL += ", DefaultValue = @DefaultValue"
Case Constants.HTMLType.picture
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alData.Add(New CustomParameter("@Width", tbWidth.Text))
strSQL += ", Necessary = @Necessary, Length = @Width"
Case Constants.HTMLType.radio
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
strSQL += ", DefaultValue = @DefaultValue"
Case Constants.HTMLType.textbox
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue))
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alData.Add(New CustomParameter("@Width", tbWidth.Text))
alData.Add(New CustomParameter("@Height", tbHeight.Text))
alData.Add(New CustomParameter("@MaxInput", tbMaxInput.Text))
strSQL += ", DefaultValue = @DefaultValue, Necessary = @Necessary, Length = @Width, Height = @Height, MaxInput = @MaxInput"
Case Constants.HTMLType.upload
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alData.Add(New CustomParameter("@Width", tbWidth.Text))
strSQL += ", Necessary = @Necessary, Length = @Width"
End Select
strSQL += " WHERE ID = " & viewstate("EditID")
ADO.BasicUpdate(strSQL, alData)
If objItem.Value = Constants.HTMLType.listbox Or objItem.Value = Constants.HTMLType.radio Then
ADO.BasicDelete("Project_List", "TableID = " & viewstate("EditID"))
For Each objListItem In lbItems.Items
alData = New ArrayList()
alData.Add(New CustomParameter("@TableID", viewstate("EditID")))
alData.Add(New CustomParameter("@ListValue", objListItem.Text))
ADO.BasicInsert("INSERT INTO Project_List (TableID, ListValue) " & _
" VALUES(@TableID, @ListValue)", alData)
Next
End If
Else
alColumns = New ArrayList()
alData = New ArrayList()
alColumns.Add("MandatorID")
alData.Add(New CustomParameter("@MandatorID", Session("MandatorID")))
If viewstate("AppendColumn") Then
alColumns.Add("TypeID")
alData.Add(New CustomParameter("@TypeID", viewstate("ProjectID")))
Else
alColumns.Add("SessionID")
alData.Add(New CustomParameter("@SessionID", Session.SessionID))
End If
alColumns.Add("ColumnName")
alData.Add(New CustomParameter("@ColumnName", tbColumnName.Text))
alColumns.Add("ColumnType")
alColumns.Add("ShowInHTML")
alData.Add(New CustomParameter("@ShowInHTML", cbShowInHTML.Checked))
alColumns.Add("Description")
alData.Add(New CustomParameter("@Description", tbDescription.Text))
Select Case objItem.Value
Case Constants.HTMLType.checkbox
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
Case Constants.HTMLType.dateinput
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
alColumns.Add("Necessary")
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
Case Constants.HTMLType.datetime
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
alColumns.Add("Necessary")
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
Case Constants.HTMLType.label
Case Constants.HTMLType.listbox
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
Case Constants.HTMLType.picture
alColumns.Add("Necessary")
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alColumns.Add("Length")
alData.Add(New CustomParameter("@Length", tbWidth.Text))
Case Constants.HTMLType.radio
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
Case Constants.HTMLType.textbox
alColumns.Add("DefaultValue")
alData.Add(New CustomParameter("@DefaultValue", tbDefaultValue.Text))
alColumns.Add("Necessary")
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alColumns.Add("Length")
alData.Add(New CustomParameter("@Length", tbWidth.Text))
alColumns.Add("Height")
alData.Add(New CustomParameter("@Height", tbHeight.Text))
alColumns.Add("MaxInput")
alData.Add(New CustomParameter("@MaxInput", tbMaxInput.Text))
Case Constants.HTMLType.upload
alColumns.Add("Necessary")
alData.Add(New CustomParameter("@Necessary", cbNecessary.Checked))
alColumns.Add("Length")
alData.Add(New CustomParameter("@Length", tbWidth.Text))
End Select
strSQL = "INSERT INTO Project_Table ("
For i = 0 To alColumns.Count - 1
strSQL += alColumns(i)
If i < alColumns.Count - 1 Then
strSQL += ", "
End If
Next
strSQL += ") VALUES("
For i = 0 To alColumns.Count - 1
strSQL += "@" & alColumns(i)
If i < alColumns.Count - 1 Then
strSQL += ", "
End If
Next
strSQL += ")"
viewstate("EditID") = ADO.BasicInsert(strSQL, alData)
If objItem.Value = Constants.HTMLType.listbox Or objItem.Value = Constants.HTMLType.radio Then
For Each objListItem In lbItems.Items
alData = New ArrayList()
alData.Add(New CustomParameter("@TableID", viewstate("EditID")))
alData.Add(New CustomParameter("@ListValue", objListItem.Text))
ADO.BasicInsert("INSERT INTO Project_List (TableID, ListValue) " & _
" VALUES(@TableID, @ListValue)", alData)
Next
End If
End If
Response.Redirect("Success.aspx")
End Sub
End Class
Betreff |
Von |
Datum |
|
  |
Re: Usercontrols dynamisch einer Webform hinzufügen
Hallo,<br><br>da Ihr hier schreibt, dass das funktioniert, habe ich mal eine Frage, was ich falsch mache:<br><br>In der CreateChildControls() baue ich mir meine webform genau so auf, wie ich es brauche, wenn... |
 |
 |
 |
|
|
Maria
Friedrich
|
08.03.2004 13:16 |
|
  |
Re: Usercontrols dynamisch einer Webform hinzufügen
Hallo,<br>der Code den ich zuvor gepostet habe, kann genau das was du anscheinend suchst.<br>Die Controls werden richtig angezeigt. Das Problem das ich bisher habe ist, dass die Einhaben verloren gehen... |
 |
 |
 |
|
|
G.
Guest
|
08.03.2004 13:20 |
|
  |
Re: Usercontrols dynamisch einer Webform...
Ich nochmal,<br><br>du baust dir ja dein Control mit den einzelnen Steuerelementen auf. Ich versuche ja *nur*, eine Auswahl von ascx anzuzeigen.<br>Aber hab schon mal Fragen, weil so möchte ich den... |
 |
 |
 |
|
|
G.
Guest
|
08.03.2004 13:53 |
|
|
Jörg
Wiedmann
|
08.03.2004 13:59 |
|
  |
Re: Usercontrols dynamisch einer Webform...
ja, genau das tu ich.<br>Layout ist mein Benutzercontrol, welches einen Header- und Menüteil hat und einen Placeholderbereich. Darin soll ein weiteres Usercontrol eingebunden werden.<br><br>Protected... |
 |
 |
 |
|
|
G.
Guest
|
08.03.2004 14:45 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!