C# 将对象绑定到控件
如果这毫无意义,你必须原谅我,因为我对ASP.NET还是很陌生 我有一个任意长的项目列表(假设它是Person类型的列表),我已经知道如何绑定到repeater控件并显示项目的属性(例如Person的名称) 我感兴趣的是如何“组合”部分,并知道数据从服务器端的何处起源(这可能没有意义;我会再试一次)。 根据下面的代码,当用户点击姓名旁边的链接按钮时,HelloHandler将运行。但是我怎么知道链接在页面上与谁的名字有逻辑关联呢?我怎样才能“得到”他们的名字 aspxC# 将对象绑定到控件,c#,asp.net,postback,repeater,C#,Asp.net,Postback,Repeater,如果这毫无意义,你必须原谅我,因为我对ASP.NET还是很陌生 我有一个任意长的项目列表(假设它是Person类型的列表),我已经知道如何绑定到repeater控件并显示项目的属性(例如Person的名称) 我感兴趣的是如何“组合”部分,并知道数据从服务器端的何处起源(这可能没有意义;我会再试一次)。 根据下面的代码,当用户点击姓名旁边的链接按钮时,HelloHandler将运行。但是我怎么知道链接在页面上与谁的名字有逻辑关联呢?我怎样才能“得到”他们的名字 aspx <asp:Repea
<asp:Repeater ID="Queue" runat="server">
<ItemTemplate>
<div>
<%# Eval("Name") %><br />
<asp:LinkButton runat="server" Text="Say Hello" OnClick="HelloHandler"></asp:LinkButton>
</div>
</ItemTemplate>
</asp:Repeater>
cs
public List<Person> People = new List<Person>();
protected void Page_Load(object sender, EventArgs e){
People.Add(new Person("Albert"));
People.Add(new Person("Bradley"));
People.Add(new Person("Chad"));
//etc...
Queue.DataSource = People;
Queue.DataBind();
}
public void HelloHandler(object sender, EventArgs e){
//?
}
public List People=new List();
受保护的无效页面加载(对象发送方、事件参数e){
人员。添加(新人员(“Albert”);
人物。添加(新人物(“布拉德利”);
人员。添加(新人员(“乍得”);
//等等。。。
Queue.DataSource=人;
Queue.DataBind();
}
公共无效HelloHandler(对象发送方,事件参数e){
//?
}
编辑
为了澄清,我希望能够从事件处理程序返回列表中相应的Person对象。在这种情况下,您可以使用该属性。您可以使用一些数据设置每个LinkButton的数据,然后在调用button事件处理程序时提取这些数据 我想我知道你想要什么,下面的代码将允许你通过点击链接按钮从中继器中删除一个项目
public void rpt_ItemCommand(object source, RepeaterCommandEventArgs e) {
Person p = People[e.Item.ItemIndex];
}
编辑:为了响应注释,我更改了代码,以显示如何将ID传递回命令事件
将顶行更改为
<asp:Repeater ID="Queue" runat="server" ItemCommand="rpt_ItemCommand">
这意味着,当您单击中继器中的按钮时,代码中现在会触发此事件 根据TheAlbear发布的内容,我在事件处理程序中提出了这一点
public void rpt_ItemCommand(object source, RepeaterCommandEventArgs e) {
Person p = People[e.Item.ItemIndex];
}
不过,我不知道使用索引是否可靠。我可能给出了一个不好的例子。当我说我想要名字的时候,我的意思是我想要列表中的整个Person对象。我试过了,但是我需要返回到列表中对象的引用。不过,我确实根据你的想法想出了一个解决方案。我现在就发布它。现在的答案显示了如何将项目ID传递回代码behindIndex并不是一个真正可靠的源代码,我已经更改了答案以显示如何传递项目ID。
public void rpt_ItemCommand(object source, RepeaterCommandEventArgs e) {
Person p = People[e.Item.ItemIndex];
}