C# 如何在ListView中实现IPostBackEventHandler接口?

C# 如何在ListView中实现IPostBackEventHandler接口?,c#,javascript,asp.net,listview,C#,Javascript,Asp.net,Listview,我正在努力通过单击行中的任意位置而不是使用指定的按钮和CommandName=“Select”来选择ListView行。这是我的密码: <asp:ListView ID="FileList" runat="server" OnSelectedIndexChanging="FileList_SelectedIndexChanging" OnSelectedIndexChanged="FileList_SelectedIndexChanged" OnItemDataBound="FileLis

我正在努力通过单击行中的任意位置而不是使用指定的
按钮
CommandName=“Select”
来选择
ListView
行。这是我的密码:

<asp:ListView ID="FileList" runat="server" OnSelectedIndexChanging="FileList_SelectedIndexChanging" OnSelectedIndexChanged="FileList_SelectedIndexChanged" OnItemDataBound="FileList_ItemDataBound">
    <LayoutTemplate>
    ...
    </LayoutTemplate>
    <ItemTemplate>
        <tr id="tr1" runat="server">
        ....
            <td>
                <asp:Button runat="server" CommandName="Select" Text="Select" />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>
这成功地为我的行分配了
OnClick
属性-据我所知,一些JavaScript在单击时被执行,加上我用来选择行的
按钮
控件停止工作

我使用
Label
控件拦截页面在单击行时发送的
Request[“\uu EVENTTARGET”]
Request[“\uu EVENTARGUMENT”]
,这就是我得到的:

Request["__EVENTTARGET"] == "ctl00$ctl00$MainContent$LocalMainContent$FileList";
Request["__EVENTARGUMENT"] == "Select$3"; // i.e. "Select$" + row_number
似乎合法,嗯

我发现可以处理ListView的回发:

public class ListViewEvent : ListView, IPostBackEventHandler
{
    public void RaisePostBackEvent(string eventArgument)
    {
        if (!eventArgument.Contains("$"))
            return;
        string[] splitEventArgument = eventArgument.Split('$');
        switch (splitEventArgument[0])
        {
            case "Select":
                SelectItem(Convert.ToInt32(splitEventArgument[1]));
                break;
            default:
                break;
        }
    }
}

现在如何为我的ListView实现这一点?谢谢。

您的listview应该使用delegate注册
ListViewEvent
,我该怎么做?很抱歉,我的问题是…请阅读并回答
public class ListViewEvent : ListView, IPostBackEventHandler
{
    public void RaisePostBackEvent(string eventArgument)
    {
        if (!eventArgument.Contains("$"))
            return;
        string[] splitEventArgument = eventArgument.Split('$');
        switch (splitEventArgument[0])
        {
            case "Select":
                SelectItem(Convert.ToInt32(splitEventArgument[1]));
                break;
            default:
                break;
        }
    }
}