2016-06-23 27 views
2

我在我的代码中使用了可扩展列表视图。我在.aspx文件中使用了占位符,并使用.aspx.cs文件中的代码加载动态文本框。我给出了生成文本框的唯一ID,但是我不知道如何获取生成的文本框中输入的值。任何帮助将不胜感激。获取在占位符中动态生成的文本框的值

当我尝试使用SQ1.text来获取用户在文本框中输入的值时,它不起作用。我如何获得在动态生成的文本框中输入的值?

.aspx文件

<div class="form-group inline clearfix""> 
     <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
      <asp:PlaceHolder ID="plhMainItem" runat="server"></asp:PlaceHolder> 
     </div> 
</div> 

.aspx.cs文件

private void LoadData(bool postback) 
     { 
      List<String> qualifications = new List<String>(); 

      qualifications.Add("Professional Qualifications"); 
      qualifications.Add("Special qualifications"); 
      qualifications.Add("Professional Experience"); 

      for (int i = 0; i < qualifications.Count; i++) 
      { 
       HtmlGenericControl newControl = new HtmlGenericControl("div"); 
       newControl.ID = "pnldefault" + i; 
       newControl.Attributes["Class"] = "panel panel-default"; 

       HtmlGenericControl headraw = new HtmlGenericControl("div"); 
       headraw.ID = "headRawDiv" + i; 
       headraw.Attributes["class"] = "panel-heading"; 
       headraw.Attributes["role"] = "tab"; 

       HtmlGenericControl bodyraw = new HtmlGenericControl("div"); 
       bodyraw.ID = "bodyRawDiv" + i; 
       bodyraw.Attributes["class"] = "tbl-body row"; 

       HtmlGenericControl nameraw = new HtmlGenericControl("div"); 
       nameraw.ID = "nameRawDiv" + i; 
       nameraw.Attributes["class"] = "col-md-7 col-sm-4 col-xs-5 tproname"; 

       HyperLink deslink = new HyperLink(); 
       deslink.Attributes["data-toggle"] = "collapse"; 
       deslink.Attributes["Class"] = "collapsed"; 
       deslink.Attributes["data-parent"] = "#accordion"; 
       deslink.Attributes["href"] = "#MainContent_detailsRawDiv" + i; 
       deslink.Attributes["aria-expanded"] = "true"; 
       deslink.Attributes["aria-controls"] = "MainContent_detailsRawDiv" + i; 
       deslink.Text = qualifications[i]; 

       nameraw.Controls.Add(deslink); 
       bodyraw.Controls.Add(nameraw); 
       headraw.Controls.Add(bodyraw); 
       newControl.Controls.Add(headraw); 

       HtmlGenericControl details = new HtmlGenericControl("div"); 
       details.ID = "detailsRawDiv" + i; 
       details.Attributes["class"] = "panel-collapse collapse"; 
       details.Attributes["role"] = "tabpanel"; 
       details.Attributes["aria-labelledby"] = "MainContent_headRawDiv" + i; 

       HtmlGenericControl pnlBody = new HtmlGenericControl("div"); 
       pnlBody.ID = "pnlBodyDiv" + i; 
       pnlBody.Attributes["class"] = "panel-body"; 

       HtmlGenericControl tableBody = new HtmlGenericControl("div"); 
       tableBody.ID = "tableBodyDiv" + i; 
       tableBody.Attributes["class"] = "tbl-body row"; 

       HtmlGenericControl tableRawBody = new HtmlGenericControl("div"); 
       tableRawBody.ID = "tableRawBodyDiv" + i; 
       tableRawBody.Attributes["class"] = "tproname"; 

       HtmlGenericControl ul = new HtmlGenericControl("ul"); 
       ul.ID = "lstDetails" + i; 

       if (qualifications[i] == "Professional Qualifications") 
       { 
        for (int j = 1; j <= 3; j++) 
        { 
         TextBox tb = new TextBox(); 
         tb.ID = "PQ" + j.ToString(); 
         tb.Attributes.Add("placeholder", "Professional Qualifications " + j.ToString()); 
         tb.Attributes["class"] = "form-control"; 
         tb.Height = 100; 
         ul.Controls.Add(tb); 
        } 
       } 
       else if (qualifications[i] == "Special qualifications") 
       { 
        for (int j = 1; j <= 3; j++) 
        { 
         TextBox tb = new TextBox(); 
         tb.ID = "SQ" + j.ToString(); 
         tb.Attributes.Add("placeholder", "Special qualifications " + j.ToString()); 
         tb.Attributes["class"] = "form-control"; 
         tb.Height = 100; 
         ul.Controls.Add(tb); 
        } 
       } 
       else if (qualifications[i] == "Professional Experience") 
       { 
        for (int j = 1; j <= 3; j++) 
        { 
         TextBox tb = new TextBox(); 
         tb.ID = "PE" + j.ToString(); 
         tb.Attributes.Add("placeholder", "Name of the work place " + j.ToString()); 
         tb.Attributes["class"] = "form-control"; 
         ul.Controls.Add(tb); 
        } 
       } 

       tableRawBody.Controls.Add(ul); 
       tableBody.Controls.Add(tableRawBody); 
       pnlBody.Controls.Add(tableBody); 
       details.Controls.Add(pnlBody); 
       newControl.Controls.Add(details); 

       plhMainItem.Controls.Add(newControl); 
      } 
     } 
+1

您是否尝试过使用FindControl访问它们(“IdofControl”);? – Lucky

+0

@Lucky它的工作 –

回答

1

您可以使用plhMainItem的FindControl与ID

int index = 1; 
TextBox tb = null; 
do 
{ 
    tb = plhMainItem.FindControl("SQ"+i++) as TextBox; 
    if(tb != null) 
    { 
     // You can access the value of TextBox using Text property, tb.Text 
    } 
} while(tb != null) 
+0

这工作完美。感谢您的回答。 –

+0

不客气。 – Adil

0

一次获得文本框方式是指导我们e从获得所有来自页面的发布数据。要使其工作,您还需要在控件上添加name

这里是你如何做到这一点。

TextBox tb = new TextBox(); 
      tb.ID = "PQ1" ; 
      // need to add the name, so later to get the post back using that. 
      tb.Attributes["name"] = "PQ1"; 

      tb.Attributes.Add("placeholder", "Professional Qualifications 1"); 
      tb.Attributes["class"] = "form-control";       
      tb.Height = 100; 

    if (IsPostBack) 
     txtDebug.Text = "Value is: " + Request.Form["PQ1"];