데이터가 채워지는 listview가 있습니다. 이 목록보기는 Preferences.aspx라는 페이지 안에있는 사용자 정의 컨트롤 안에 있습니다. 오늘 나는 서버에 다시 게시하는 것을 포함하는 각 행의 의미에서 click 이벤트를 처리하고 있습니다.포스트 백이없는 클릭 이벤트 처리
사용자에게 개별적으로 표시해야하는 추가 설정 그룹이 있으므로 이제 Preferences.aspx에 다른 사용자 컨트롤을 추가해야합니다. 새 사용자 정의 컨트롤을 페이지의 별도 탭에 추가했습니다. 이 새로운 탭은 사용자가 Preferences.aspx에 도착했을 때 가장 먼저 보여야합니다.
이제 사용자가 두 번째 탭 (listview가있는 사용자 정의 컨트롤)으로 이동하여 행을 클릭하면 다시 게시가 발생합니다. 그러면 사용자가 첫 번째 탭 (새로 추가 된 사용자 정의 컨트롤)에 놓입니다.
그래서 어떻게하면 다시 게시 할 필요없이 행에서 클릭 이벤트를 얻을 수 있습니까?
어떤 아이디어 나 제안도 환영합니다. 나는 C#으로 Asp.Net에서 일하고 있습니다.
코드는 상기 사용자 컨트롤 내에
표식 :
<asp:TableRow runat="server" id="trVisitor" CssClass='<%# GetRowClass() %>' >
<asp:TableCell ID="tdPicture" runat="server" Width="10" onclick='<%# GetClickPostBack(Container.ItemIndex) %>'>
<div style="margin-top:1px;">
<asp:Image ImageUrl=' <%# Page.ResolveUrl("~/" + Eval("Visitor.StatusImageUrl")) %>' visible='<%# historyFlag ? false : true %>' runat="server"/>
</div>
</asp:TableCell>
... 등등
마크 업 내부 Preferences.aspx :
<ABC:ListControl runat="server" ID="visitorListControl" CanSelect="true" IsMine="true" Recurring="false" OnVisitorSelected="ListControl_VisitorSelected" />
코드 뒤에 :
protected string GetClickPostBack(int itemIndex)
{
if (CanSelect)
//return 0.ToString();
return "javascript: " + Page.ClientScript.GetPostBackEventReference(this, VisitorRowPrefix + itemIndex) + "; return false;";
else
return string.Empty;
}
public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument.StartsWith(VisitorRowPrefix))
{
HandleRowClick(Convert.ToInt32(eventArgument.Substring(VisitorRowPrefix.Length)));
}
}
private void HandleRowClick(int index)
{
int CmgVisitorId = Constants.NotConfigured;
// bool IsHistoricVisitor = false;
// Visitor HistoricVisitor = new Visitor();
// Mark only the clicked row
... 등등. 2 개 가능한 방법으로 그들의 기본 동작 (포스트 백) 자바 스크립트/jQuery를 사용하여, 방지 그리드 버튼의 클릭 이벤트에
는
이벤트 코드가 있습니까? – ZoomVirus
karl sweeney : 내 질문의 정연한 버전에 코드 하이라이트를 추가했습니다. – sywa08
' 컨트롤을 사용할 수 있습니까? 내가 너를 올바르게 이해하고 있다면, 이것을 사용하는 것이 좋다. –
Volearix