2011-07-27 6 views
0

저는 C#/asp.net에 웹 프로젝트가 있습니다. 나는 그것으로 코딩 된 단추가있는 GridView UserControl 있습니다. 버튼에는 다른 페이지로 리디렉션되는 OnClick 이벤트가 있습니다. 이 시점에서 버튼을 몇 번 눌러도 onclick 이벤트가 발생하지 않습니다. 그러나, 코드를 뒤에있는 이벤트와 함께 사용자 정의 컨트롤을 사용하는 페이지에 단추를 하드 코드하면 onclick 이벤트가 제대로 작동합니다.UserControl OnClick 이벤트가 발생하지 않습니다

또한 UserControl의 GridView 외부로 단추를 이동할 때 제대로 작동합니다. 그러나 공간이 제한되어 있으므로 페이지 하단의 호출기 막대에 배치해야합니다. 뒤에

<PagerTemplate> 
    <table width="100%" cellpadding="0" cellspacing="0"> 
     <tr> 
      <td align="left" valign="middle"> 
       <asp:Panel cssClass="PagerPanel" runat="server"> 
       <asp:Button ID="FirstButton" runat="server" OnClick="FirstButton_Click" Text="|&lt;" Enabled="<%# (_gridView.PageIndex > 0) %>" /> 
       <asp:Button ID="PrevButton" runat="server" OnClick="PrevButton_Click" Text="&lt;" Enabled="<%# (_gridView.PageIndex > 0) %>" /> 
       <%# _gridView.PageIndex+1 %> of <%# _gridView.PageCount %> 
       <asp:Button ID="NextButton" runat="server" OnClick="NextButton_Click" Text="&gt;" Enabled="<%# (_gridView.PageIndex < _gridView.PageCount-1) %>" /> 
       <asp:Button ID="LastButton" runat="server" OnClick="LastButton_Click" Text="&gt;|" Enabled="<%# (_gridView.PageIndex < _gridView.PageCount-1) %>" /> 
       </asp:Panel> 
      </td> 

      <td> 
      <asp:Button ID="Button1" OnClick="AddButton_Click" runat="server"  
       Text="Button" /> 
      </td> 
     </tr> 
    </table> 
    </PagerTemplate> 

UserControl을 코드 ​​:

protected void AddButton_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("thisurl..."); 
} 

나는이 클릭 이벤트를 처리 할 수있는 그 밖의 무엇 확실하지. 분명히 GridView는 어떻게 든 해고하지 않습니다. 어쨌든 UserControl의 GridView가 onclick 이벤트를 처리 할 버튼을 가질 수 있습니까?

답변

1

당신은 ASP에 명령 이름 = "버튼"속성을 추가해야합니다. 그런 다음, (명령 이름을 확인 즉 OnRowCommand 이벤트 처리기에서 (e.CommandName == "버튼").

<asp:Button ID="Button1" CommandName="Button" runat="server" Text="Button" /> 

...

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Button") 
    { 
    ... 
    } 
} 
+0

감사 @Brady! 그게 정확히 무엇을하는 경우 I "OnRowCommand ="GridView_RowCommand "를 gridview에 추가했는데 효과적이었습니다! – ImGreg

+0

좋아, 거의 완벽하게 작동했습니다. CommandName과 CommandArgument는 내가 설정 한 것과 관계없이 매번"편집 "&"-1 " 이 단추 주위에 어떤 방법이 있습니까? 리디렉션 할 곳을 알 수 있도록 어느 단추를 눌렀는지 고유하게 식별하는 방법이 필요합니다. – ImGreg

+0

이상 하네. gridview의 AutoGenerateEditButton 속성이 true로 설정되어 있지 않은지 확인하십시오. 여전히 작동시키지 못한다면, 그리드 뷰에 버튼이있는 빠르고 더러운 웹 사이트를 만들고 작동시킬 수 있는지 확인하십시오. 그런 다음, 제거 과정을 통해 진행중인 작업을 파악할 수 있습니다. 귀하의 gridview에 방해가되는 다른 것들이있을 수 있습니다. – Brady

2

이벤트 처리기를 실행하기 전에 이벤트를 컨트롤에 바인딩해야하기 때문에 문제가 발생합니다. 그러나 단추가 템플릿에 의해 페이지에 동적으로 추가되기 때문에 이벤트가있을 때까지 존재하지 않습니다. 트리거 됨.

해결 방법에는 여러 가지가 있지만 EnsureChildControls를 살펴 보겠습니다. 버튼 선언을 다음의 GridView의하여 RowCommand 이벤트를 철사 :

http://msdn.microsoft.com/en-us/library/system.web.ui.control.ensurechildcontrols.aspx

관련 문제