C# 如何在具有回调功能的中继器中实现精确控制

C# 如何在具有回调功能的中继器中实现精确控制,c#,user-controls,callback,C#,User Controls,Callback,我开发了一个带有回发的页面,但最近我决定将其更改为使用回发 母版页 页面 中继器 td1 显示描述的文字 td2 EditControl***(在查看模式下启动,使用保存按钮回发到编辑模式时启动) 因此,我有100条记录,对于每个转发器项目,我都可以通过编辑按钮(linkbutton with href:javascript:void和回调函数Edit(“”)在查看模式下进行控制 当我单击Edit时,它会引发回调事件,但在这一点上,假设我单击中继器中的第15个控件,但回调事件认为它是中继器中的第

我开发了一个带有回发的页面,但最近我决定将其更改为使用回发

母版页

页面

中继器

td1

显示描述的文字

td2

EditControl***(在查看模式下启动,使用保存按钮回发到编辑模式时启动)

因此,我有100条记录,对于每个转发器项目,我都可以通过编辑按钮(linkbutton with href:javascript:void和回调函数Edit(“”)在查看模式下进行控制

当我单击Edit时,它会引发回调事件,但在这一点上,假设我单击中继器中的第15个控件,但回调事件认为它是中继器中的第一个控件,我指的是第1行

那么,我该如何操作我真正点击它的精确控件呢


因为在最后,我使用HtmlTextWriter(RenderControl)返回控件,并将其发送到客户端接收器数据函数,以使用innerHtml进行渲染,这非常好,但只适用于第一行中的第一个控件

您需要将
CommandArgument
传递给控件,以便在引发事件时,可以检索args并知道单击了哪个按钮

中继器需要一个
ItemCommand
事件:

<asp:Repeater ID="repeater" runat="server" OnItemDataBound="repeater_OnItemDataBound" OnItemCommand="repeater_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton ID="lnkBtnEdit" runat="server" Text="Edit" />
    </ItemTemplate>
</asp:Repeater>
接下来,在单击其中一个链接按钮时将引发的
ItemCommand
事件中,您将获得命令参数,该参数告诉您单击了哪个链接按钮:

protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
     //This is how you know which button was clicked
     string foo = e.CommandArgument;
}
实际上,您可能希望传入正在单击的项目的对象ID,这可能会重定向到ID为querystring参数的编辑页面。在编辑页面中,您将按ID拉入有关该对象的数据

protected void repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
     //This is how you know which button was clicked
     string foo = e.CommandArgument;
}