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;
}
}
}