1

我正在使用中继器从数据库中获取项目。

我将每个项目放入 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。

提前致谢!

4

2 回答 2

1

对于中继器,一个好方法是使用命令按钮。

在您的 .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...
    }
}
于 2013-05-07T21:51:26.797 回答
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
}

只要您在每个重复项目旁边有 1 个按钮,这将起作用。

于 2013-05-07T21:23:05.573 回答