好像我已经撞上了墙在这里。 我想一些数据源绑定到一个asp.net中继器(当然,并不一定是一个中继器,但似乎这就是我想要的)。 现在,这里的渔获:我还需要一个中继器内部的一些服务器控件用于更新数据(TextBox'es和按钮)。
据我了解,这AINT真的有可能在有条不紊地做什么? 我不能只是添加一个文本框ItemTemplate中,然后在以后获取它的代码隐藏它似乎。 至少不容易。 是否有这样那样的问题任何已知的技术?
我不能用一个gridview,因为数据需要以某种方式进行格式化。
好像我已经撞上了墙在这里。 我想一些数据源绑定到一个asp.net中继器(当然,并不一定是一个中继器,但似乎这就是我想要的)。 现在,这里的渔获:我还需要一个中继器内部的一些服务器控件用于更新数据(TextBox'es和按钮)。
据我了解,这AINT真的有可能在有条不紊地做什么? 我不能只是添加一个文本框ItemTemplate中,然后在以后获取它的代码隐藏它似乎。 至少不容易。 是否有这样那样的问题任何已知的技术?
我不能用一个gridview,因为数据需要以某种方式进行格式化。
如果你不希望使用ItemCommand并希望刚刚经历Repeater的项目收集循环,让你有一个“保存”,在页面底部的按钮,你可以做这样的:
foreach(RepeaterItem itm in MyRepeater.Items)
{
TextBox t = (TextBox)(itm.FindControl("TextBox1"));
// do something with it.
}
当然,你需要确保在ASPX的TextBox1中具有的Runat =“server”属性。
您可以使用Repeater.ItemDataBound事件找到嵌套在一个Repeater控件。
<asp:Repeater ID="Repeater1" Runat="server" OnItemDataBound="Repeater1_ItemDataBound">
<ItemTemplate>
<div><asp:TextBox ID="TextBox1" runat="server" /></div>
</ItemTemplate>
</asp:Repeater>
然后在后面的代码:
protected void Repeater1_ItemDataBound(object source, RepeaterCommandEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType !=
ListItemType.AlternatingItem)
return;
TextBox textBox1 = e.Item.FindControl("TextBox1") as TextBox;
if (textBox1 != null)
{
// do something with it
}
}
好像我的问题是我想的方式:)
我的解决方案:我刚添加控件我通常会做,但里面的ItemTemplate。 在控件的回调事件,我会去:
(例如按钮)
protected void btnUpdate_OnClick(object sender, EventArgs e)
{
Button b = sender as Button;
if (b != null)
{
RepeaterItem ri = b.Parent as RepeaterItem;
if (ri != null)
{
string name = null;
//Fetch data
TextBox txtName = ri.FindControl("txtName") as TextBox;
。等等。
因此,找到的RepeaterItem后,我只把它当作我会与任何ControlGroup。 不要紧,我居然有5个不同textbosses,与ID =“txtName的”编码,因为asp.net自动地给客户端标记的控件“混淆”的名字,并且把该回到我的ID上回发。
希望这可以帮助别人,并抱歉打扰:)