我正在使用Repeater从数据库中获取项目。
我将每个项目放入Web用户控制页面,使用以下代码:
<%#DataBinder.Eval(Container.DataItem, "XXXX")%>
XXXX =数据库中的属性,例如:用户名。
在Web用户控制页面的.cs文件中,我想从每个重复的元素中获取ID(也在数据库中),任何线索我怎么能这样做?
例如:
<%#DataBinder.Eval(Container.DataItem, "Username")%>
显示数据库中每个人的用户名。在.cs文件中,我想获取该用户名的ID。因此,当在重复的用户名旁边点击一个按钮时,我可以使用这样的SQL查询:
UPDATE Table SET Username = "Mike" WHERE ID = '" + #### + "'
我不知道该怎么写代替####。
这:#### =重复用户名中点击按钮的ID。
提前致谢!
答案 0 :(得分:1)
使用Repeater,一个好方法是使用命令按钮。
在.aspx中,在转发器ItemTemplate中定义一个命令按钮:
<asp:Repeater ID="repUsers" runat="server" OnItemCommand="repUsers_ItemCommand">
<ItemTemplate>
<asp:Button runat="server" CommandName="select" CommandArgument='<%#Eval("Id")%>' Text="Select" />
<span><%#Eval("Username")%></span>
<br />
</ItemTemplate>
</asp:Repeater>
在你的.cs中,捕获命令按钮点击:
protected void repUsers_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "select")
{
int userId = int.Parse(e.CommandArgument.ToString());
// do your db update here...
}
}
答案 1 :(得分:0)
在您的aspx页面中执行以下操作:
<asp:Repeater OnItemCommand="ButtonCommandEvent" ID="myRepeater" runat="server">
<ItemTemplate>
...
<asp:HiddenField ID="recordId" runat="server" value='<%# Eval("id") %>' />
...
</ItemTemplate>
然后在您的代码中,您可以连接按钮以执行以下操作:
void ButtonCommandEvent(Object obj, RepeaterCommandEventArgs e)
{
var temp = e.Item.FindControl("recordId") as HiddenField;
//use the value in temp to insert into your database
//UPDATE Table SET Username = "Mike" WHERE ID = temp
}
只要您在每个重复项目旁边有一个按钮,这将有效。