2015-10-15 82 views
0

我正在使用Asp.Net Gridview并在第三列中动态添加文本框。 第三列有一个PlaceHolder,我在该placeHolder中动态添加Textbox。这部分工作正常。现在,如果我在该文本框内输入任何文本,我怎么能够获得用户输入的值。获取Asp.Net Gridview中动态创建控件的值C#

+0

显示您的代码! –

+0

在什么事件你想获得文本框的价值? – Adil

+0

在gridview中的下拉列表中,我正在创建控件。所以当我更改下拉列表的值时,我想要在文本框内输入用户值。 – Rahul

回答

0

下面是我的代码:

protected void ddlChangeSubType_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DropDownList ddlChangeSubType = (DropDownList)sender; 
      GridViewRow currentRow = (GridViewRow)ddlChangeSubType.NamingContainer; 
      DropDownList ddlChangeType = currentRow.FindControl("ddlChangeType") as DropDownList; 
      //TextBox txt = currentRow.FindControl("txt") as TextBox; 

      PlaceHolder placehldr = currentRow.FindControl("placehldrDynamicCnrtl") as PlaceHolder; 

      object objControl; 

      rowIndex = currentRow.RowIndex; 
      if (Session["DynamicControls"] != null) 
      { 
       for (int y = 0; y < CRFormGridView.Rows.Count; y++) 
       { 
        if (((Dictionary<int, object>)Session["DynamicControls"]).TryGetValue(y, out objControl)) 
        { 
         objControlsDict.Add(y, objControl); 
        } 
       } 
      } 

      if (ddlChangeSubType != null && currentRow != null && ddlChangeSubType != null) 
      { 
       switch (ddlChangeType.SelectedItem.Text.ToUpper()) 
       { 
        case "UPDATE OFFER": 
         TextBox txtBox = new TextBox(); 
         txtBox.Text = "Text Box Added"; 
         txtBox.ID = "txt"; 
         txtBox.ClientIDMode = ClientIDMode.Static; 
         txtBox.EnableViewState = true; 
         placehldr.Controls.Add(txtBox); 
         if (objControlsDict.ContainsKey(rowIndex)) 
          objControlsDict.Remove(rowIndex); 
         objControlsDict.Add(rowIndex, txtBox); 
         break; 

        case "ADD COMPONENT": 
         Label lbl = new Label(); 
         lbl.Text = "Label Added"; 
         lbl.ID = "lbl"; 
         lbl.ClientIDMode = ClientIDMode.Static; 
         lbl.EnableViewState = true; 
         placehldr.Controls.Add(lbl); 
         if (objControlsDict.ContainsKey(rowIndex)) 
          objControlsDict.Remove(rowIndex); 
         objControlsDict.Add(rowIndex, lbl); 
         break; 

        case "UPDATE REQUEST": 
         break; 

        default: 
         break; 
       } 

       Session.Add("DynamicControls", objControlsDict); 
      } 
     } 


    protected void placehldrDynamicCnrtl_PreRender(object sender, EventArgs e) 
     { 
      try 
      { 
       if (Page.IsPostBack) 
       { 
        PlaceHolder placeHldr = (PlaceHolder)sender; 
        GridViewRow currentRow = (GridViewRow)placeHldr.NamingContainer; 

        objControlsDict = (Dictionary<int, object>)Session["DynamicControls"]; 
        if (objControlsDict != null) 
        { 
         if (objControlsDict.ContainsKey(count) && objControlsDict[count] is TextBox) 
         { 
          TextBox txtBox = (TextBox)objControlsDict[count]; 
          txtBox.Text = "Text Box Added"; 
          txtBox.ID = "txt"; 
          txtBox.ClientIDMode = ClientIDMode.Static; 
          txtBox.EnableViewState = true; 
          ((PlaceHolder)this.CRFormGridView.Rows[count].Cells[3].FindControl(
           "placehldrDynamicCnrtl")).Controls.Add(txtBox); 
         } 

         if (objControlsDict.ContainsKey(count) && objControlsDict[count] is Label) 
         { 
          Label lbl = (Label)objControlsDict[count]; 
          lbl.Text = "Label Added"; 
          lbl.ID = "lbl"; 
          lbl.ClientIDMode = ClientIDMode.Static; 
          lbl.EnableViewState = true; 
          ((PlaceHolder)this.CRFormGridView.Rows[count].Cells[3].FindControl(
           "placehldrDynamicCnrtl")).Controls.Add(lbl); 
         } 
         count++; 
        } 
       } 
      } 
      catch (Exception es) 
      { 
       throw; 
      } 
     } 
0

您可以用'的FindControl( “控件ID”)来访问你的文本框,例如:

TextBox txtbox = (TextBox)FindControl("txt"); 

,为了得到它的价值,你”你会写:

String txt_value = txtbox.Text; 

你可以访问你的文本框的任何属性后,使TextBox对象和找到它的ID与th e帮助如果FindControl()