2009-07-10 16 views
0

ich einige dynamische Textbox ist und eine Schaltfläche in einem Platzhalter erstellen und möchten Informationen in Textfeld des speichern, wenn die Schaltfläche geklickt wird, aber nicht sicher, wie Daten aus dem Textfeld abzurufenWie kann ich lesen eine dynamisch erstellte Textbox

LiteralControl spacediv3 = new LiteralControl("&nbsp&nbsp"); 
Label lblComText = new Label(); 
lblComTitle.Text = "Comment"; 
TextBox txtComment = new TextBox(); 
txtComment.Width = 200; 
txtComment.TextMode = TextBoxMode.MultiLine; 
phBlog.Controls.Add(lblComText); 
phBlog.Controls.Add(spacediv3); 
phBlog.Controls.Add(txtComment); 

Button btnCommentSave = new Button(); 
btnCommentSave.ID = "mySavebtnComments" ; 
btnCommentSave.Text = "Save "; 
phBlog.Controls.Add(btnCommentSave); 
btnCommentSave.CommandArgument = row["ID"].ToString(); 
btnCommentSave.Command += new CommandEventHandler(btnSave_Click); 

protected void btnSave_Click(object sender, CommandEventArgs e) 
{ 
    firstelement.InnerText = txtComment.text // this gives error on txtComment.text 
} 

Antwort

1

Sie müssen einen Verweis auf das Steuerelement in btnSave_Click zu bekommen. Etwas wie:

protected void btnSave_Click(object sender, CommandEventArgs e) 
{ 
    var btn = (Button)sender; 
    var container = btn.NamingContainer; 
    var txtBox = (TextBox)container.FindControl("txtComment"); 
    firstelement.InnerText = txtBox.text // this gives error on txtComment.text 
} 

Sie müssen auch die ID auf txtComment festlegen und alle dynamisch erstellten Steuerelemente beim Postback neu erstellen.

0

Sie benötigen einen Mechanismus, um offensichtlich eine Beziehung zwischen dem Button und der TextBox zu erstellen. In winforms wäre das einfach, wo jedes Steuerelement eine Tag-Eigenschaft besitzt, die einen Verweis auf so ziemlich alles enthalten kann. Die Web-Steuerelemente haben keine solche Eigenschaft (die ich kenne), aber es ist immer noch einfach, solche Beziehungen aufrechtzuerhalten. Ein Ansatz wäre, haben Dictionary in der Seite zu speichern Taste/Textbox Beziehungen:

private Dictionary<Button, TextBox> _buttonTextBoxRelations = new Dictionary<Button, TextBox>(); 

Wenn Sie die Taste und Textboxsteuerelemente erstellen, können Sie sie im Wörterbuch einfügen:

TextBox txtComment = new TextBox(); 
// ... 

Button btnCommentSave = new Button(); 
// ... 
_buttonTextBoxRelations.Add(btnCommentSave, txtComment); 

... und dann können Sie das Textfeld in der Schaltfläche Click-Ereignis sehen:

protected void btnSave_Click(object sender, CommandEventArgs e) 
{ 
    TextBox commentTextBox = _buttonTextBoxRelations[(Button)sender]; 
    firstelement.InnerText = txtComment.text // this gives error on txtComment.text 
} 
0

hinzufügen 'ID' auf die Textbox

txtComment.ID = "txtComment" 

Antrag die Informationen aus der vorgelegten Form (vorausgesetzt, Sie haben ein Formular auf der Seite)

comment = Request.Form("txtComment") 
0

Versuchen während Postbacks txtComment zu laden (mit der gleichen ID) in der überschriebenen LoadViewState-Methode nach dem Aufruf von base.LoadViewState. In diesem Fall laden Sie es, bevor die Postback-Daten verarbeitet werden und die txtComment-Steuerung geladen wird.

Verwandte Themen