看图:
代码:
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
item.FindControl("MyPanel").Controls.Count 为0
#3
可以用JS获取值后异步提交试试
#4
用Request.Form来获取
#5
你试着在ItemCreated事件里做添加控件的事。
#6
楼主!你是怎么实现的?我也遇到了同样的问题!
#1
提交时遍历panel里面生成的控件
#2
item.FindControl("MyPanel").Controls.Count 为0
#3
可以用JS获取值后异步提交试试
#4
用Request.Form来获取
#5
你试着在ItemCreated事件里做添加控件的事。
#6
楼主!你是怎么实现的?我也遇到了同样的问题!