2014-10-20 2 views
1

GridView에서 OnRowDeleting 이벤트와 함께 asp : Button을 연결하려고하는데 그 작업을 수행하는 방법을 알지 못합니다. X. 현재 CommandField를 사용하고 있습니다 만, 내 자신의 목적에 따라 대신 Button이 필요합니다. 누구든지 제발 도와 주실 래요?asp : OnRowDeleting 이벤트가있는 단추 사용

편집 :

나를 다시 설명하자, 나는 동일한있는 CommandField에서 삭제하고 편집 버튼이있는 행을 가지고있다. 내가 뭘 하려는지 특정 행에 대해서만 모든 행에 대한 일부 특정 경우에 '삭제'버튼을 숨기려고하는 것입니다. 그래서 CodeFind에서 참조 할 수없는 ID가 없기 때문에 CommandField에 어려움을 겪고있는 것입니다. 하지만 - asp : 버튼에는 ID가 있지만 UserAccounts_RowDeleting 기능과 링크 할 수 없습니다. 그리고 그것은 나의 질문입니다 - 그것을 연결하는 방법? :)

EDIT2 :

이 내 코드의 일부입니다 :

나는 내가 활성화/특정 행에 대해서만 코드 숨김 통해 비활성화 할 수 있습니다 ItemTemplate을 할 수있는 CommandField을 변경하려면
<asp:GridView ID="UserAccounts" runat="server" AutoGenerateColumns="False" HeaderStyle-BackColor="#3AC0F2" 
HeaderStyle-ForeColor="White" AutoGenerateDeleteButton="false" 
RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" AutoGenerateEditButton="false" 
onrowcancelingedit="UserAccounts_RowCancelingEdit" RowStyle-ForeColor="#3A3A3A" OnRowEditing="UserAccounts_RowEditing" 
PageSize="10" AllowPaging="false" onrowdeleting="UserAccounts_RowDeleting" 
OnRowUpdating="UserAccounts_RowUpdating" OnRowDataBound="UserAccounts_RowDataBound" onrowcreated="UserAccounts_RowCreated"> 
<Columns> 
<asp:CommandField ShowDeleteButton="true" ShowEditButton='true' ButtonType="Link" /> 
<asp:BoundField DataField="UserName" HeaderText="Username" ReadOnly="true"/> 
<asp:BoundField DataField="Email" HeaderText="Email" /> 
<asp:CheckBoxField DataField="IsApproved" HeaderText="Approved?" ReadOnly="false"/> 
<asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked Out?" ReadOnly="true"/> 
<asp:CheckBoxField DataField="IsOnline" HeaderText="Online?" ReadOnly="true"/> 
<asp:BoundField DataField="Comment" HeaderText="Comment" NullDisplayText="N/A"/> 
<asp:TemplateField HeaderText="Select" > 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 
</Columns> 

//Codebehind c# 
protected void UserAccounts_RowDeleting(object sender, GridViewDeleteEventArgs e) 
    { 
     if (Funcs.GetAdminLevel() >= 999) 
     { 
      username = UserAccounts.Rows[e.RowIndex].Cells[1].Text; 
      if (username.ToLower().Equals(HttpContext.Current.User.Identity.Name.ToLower())) 
       ActionStatus.Text = string.Format("ERROR: You can't delete your own account ('<font color=#000000><b>{0}</b></font>')!", username); 
      else if (Funcs.GetAdminLevel(username) >= 1) 
       ActionStatus.Text = string.Format("ERROR: You can't delete administrators' accounts ('<font color=#000000><b>{0}</b></font>')!", username); 
      else 
      { 
       Roles.RemoveUserFromRoles(username, Roles.GetRolesForUser(username)); 
       Membership.DeleteUser(username); 
       ActionStatus.Text = string.Format("User '<font color=#000000><b>{0}</b></font>' has been successfully deleted!", username); 
       BindUserAccounts(); 
      } 
     } 
     else 
      ActionStatus.Text = "You are not authorized to delete user accounts!"; 
    } 

. 또한 ItemTemplate을 asp : Button으로 UserAccounts_RowDeleting 이벤트를 사용하려면 내 문제가있는 곳에서 버튼을 이벤트에 연결하는 방법을 모르겠습니다.

+0

일부 코드를 게시 할 수 있습니까? – causita

+0

일부 코드가있는 내 게시물을 편집했습니다 – Aradmey

답변

1

꽤 많은 해결책이 이미 있습니다. 버튼에 TemplateField을 사용하십시오. 핵심 부분은 버튼의 CommandName을 "삭제"로 설정하는 것입니다. GridView는 삭제 버튼이며 RowDeleting 이벤트가이를 처리해야한다고 알려줍니다.

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:Button ID="btnDelete" runat="server" Text="Delete" CommandName="Delete" /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

고마워요, 지금 버튼을 삭제하십시오 :) 이제 편집 버튼이 작동하지 않는다는 것이 문제입니다. 편집을 클릭하면 행과 모든 것을 편집 할 수 있지만 CommandField에서와 같이 편집 버튼을 업데이트 버튼으로 설정하지 않으므로 편집 내용을 저장할 수 없습니다. – Aradmey

+0

멋지다! 편집 버튼을 템플릿 필드로 만든 경우 해당 문제를 직접 처리해야합니다. 몇 가지 조사를 해보고 다른 질문이 있으면 StackOverflow에 다른 질문을 만드십시오. [이 질문] (http://stackoverflow.com/questions/18137137/update-cancel-buttons-dont-appear-in-templatefield-edit-button)이 좋은 시작일 수 있습니다. –

+0

대단히 감사합니다 !! 내 문제를 해결하기 위해 나에게 추천 한 질문. 당신은 최고예요! – Aradmey