2009-07-10 26 views
0

我創造了一些動態文本框的和按鈕的佔位符和想保存在文本框的信息被點擊按鈕時,但不知道如何從文本檢索數據我怎麼能讀一個動態創建文本框

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 
} 

回答

1

你需要去在btnSave_Click你控制的參考。例如:

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 
} 

您還需要在txtComment上設置ID並在回發時重新創建任何動態創建的控件。

0

您將需要一些機制來顯然在Button和TextBox之間創建關係。在winforms中,這很容易,每個控件都有一個Tag屬性,它可以包含幾乎任何東西的引用。網絡控制沒有這樣的屬性(我知道),但維護這種關係仍然很容易。一種方法是在頁面Dictionary存儲按鈕/文本框關係:

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

當您創建按鈕和文本框控件,可以插入他們在詞典:

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

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

...和然後你可以看一下文本框按鈕的單擊事件:

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

回傳過程中添加的「ID」的文本框

txtComment.ID = "txtComment" 

請求從提交的表單中的信息(前提是你有在頁面上的表單)

comment = Request.Form("txtComment") 
0

嘗試加載txtComment(在調用base.LoadViewState後,在重載的LoadViewState方法中使用相同的ID)。在這種情況下,您在處理回發數據並加載txtComment控件之前加載它。