如何获取repeater中动态添加的控件的值

时间:2022-11-26 17:38:50
后台动态的生成了一些控件如TextBox添加到repeater中,提交的时候怎么获取到TextBox的值??

看图: 如何获取repeater中动态添加的控件的值

代码:
HTML:

<asp:Repeater ID="rptFridge" runat="server" OnItemDataBound="rptBase_ItemDataBound">
       <ItemTemplate>
              <%# (Container.ItemIndex != 0 && Container.ItemIndex % 3 == 0) ? "</tr><tr>" : ""%>
               <th><%# DataBinder.Eval(Container.DataItem, "CarParamName")%></th>
               <td>
                       <asp:Panel ID="MyPanel" runat="server"></asp:Panel>
               </td>
        </ItemTemplate>
</asp:Repeater>

红线框里面参数都是从数据库里面读出来的,如:级别,dropdownlist等

文本框,下拉框等控件都是后台动态生成添加到Panel中
代码:

protected void rptBase_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Panel myPanel = e.Item.FindControl("MyPanel") as Panel;

                DataRowView RowItem = e.Item.DataItem as DataRowView;
                if (!ValidationHelper.IsNullOrEmpty(RowItem) && !ValidationHelper.IsNullOrEmpty(myPanel))
                {
                    switch (RowItem["ControlTypeCode"].ToString())
                    { 
                        case ControlType.TextBox:
                            myPanel.Controls.Add(GetTextBox());break;
                        case ControlType.DropDownList:
                            myPanel.Controls.Add(GetDropDownList(RowItem["ParamsValue"].ToString())); break;
                    }
                }
            }
        }

private DropDownList GetDropDownList(string ParamsValue)
        {
            DropDownList ddl = new DropDownList();
            ddl.CssClass = "txtInput normal required";
            ddl.ID = "ddl1";
            foreach (ListItem item in GetListItem(ParamsValue))
            {
                ddl.Items.Add(item);
            }

            return ddl;
        }


红线框里面参数都是从数据库里面读出来的,如:级别,dropdownlist等

文本框,下拉框等控件都是后台动态生成添加到Panel中


问题: 
提交的时候怎么获取文本框或者下拉框里面的值?????


分不多了,求大家指点,小弟感激不尽!

6 个解决方案

#1


提交时遍历panel里面生成的控件
 

#2


引用 1 楼 kongwei521 的回复:
提交时遍历panel里面生成的控件
 


item.FindControl("MyPanel").Controls.Count  为0

#3


可以用JS获取值后异步提交试试

#4


用Request.Form来获取

#5


你试着在ItemCreated事件里做添加控件的事。

#6


楼主!你是怎么实现的?我也遇到了同样的问题!

#1


提交时遍历panel里面生成的控件
 

#2


引用 1 楼 kongwei521 的回复:
提交时遍历panel里面生成的控件
 


item.FindControl("MyPanel").Controls.Count  为0

#3


可以用JS获取值后异步提交试试

#4


用Request.Form来获取

#5


你试着在ItemCreated事件里做添加控件的事。

#6


楼主!你是怎么实现的?我也遇到了同样的问题!