2009-05-12 9 views
0

내 데이터베이스에서 일부 데이터를 가져 오지만 수집하려고하는 모든 정보를 표시하지 않는 Gridview 컨트롤을 만들었습니다. 사용자 인터페이스 목적으로 기본 키를 표시하지 않고 그리드의 기본 조작을 위해 키를 요구합니다.gridviews에서 gridviews에 표시되지 않는 데이터베이스 정보를 가져 오는 중

현재 테이블에 '삭제'옵션을 추가하려고하고 있지만 불행히도 운이별로 없습니다. 여기에 .aspx 파일이 있습니다.

<asp:GridView ID="ManagerList_GV" runat="server" 
       AutoGenerateColumns="False" AllowSorting="True" 
       DataKeyNames = "ManagerID" OnRowEditing="editManager" 
       OnRowDataBound="FormatManagers" CellPadding="3" > 
       <Columns> 
        <asp:BoundField HeaderText="Manager" DataField="FullName" /> 
        <asp:BoundField HeaderText="Status" DataField="Status" /> 
        <asp:CommandField EditText="Edit" ShowEditButton="True" /> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <asp:LinkButton Text="Delete" runat="server" CommandName="deleteRow" /> 
         </ItemTemplate> 
        </asp:TemplateField>    
       </Columns> 
      </asp:GridView> 

불행히도, 내 백 엔드를 위해 무엇을해야할지 모르겠습니다. 내 저장 프로 시저 및 비즈니스 계층 서브 루틴을 만들었지 만 어떤 행을 방금 클릭 한 다음 b)이 행과 관련하여 기본 키에 액세스하는 방법을 잘 모르겠습니다. 이후로는 표시하지 않을 것입니다. (기본 키는 ManagerID 임). 당신의 도움 :)

답변

4

내가 버튼 필드를 만들 것입니다 사용하여 기본 키에 액세스하지만 나뿐만 아니라 템플릿 필드가 작동해야한다고 생각 할 수 있습니다

<asp:ButtonField ButtonType="Link" Text="Delete" CommandName="Delete" /> 

그런 다음 당신이 RowDeleting을 처리 할 GRIDVIEW의 이벤트 :

Private Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles Gridview1.RowDeleting 
    Dim ManagerIdToDelete As Int32 = CType(CType(sender, GridView).DataKeys(e.RowIndex).Value, Int32) 
    'Now call your delete command with the id 
End Sub 
+0

GridViewName_RowDeleting이이 이벤트에서 asp.net에 의해 자동으로 호출 되었습니까? 또한 CommandName = "Delete"를 사용하면 "Delete"가 시스템에 내장되어 있기 때문에 문제가 발생하지 않습니까? 또는 CommandName을 사용하여이 함수를 트리거 할 수 있습니까? –

+0

CommandName = Delete를 추가하면 ASP.Net의 RowDeleting 이벤트가 실행됩니다. – brendan

+0

굉장, 고마워. :) –

0

에 미리

덕분에 디자인 뷰에 기본 키가 같은 눈에 보이는 표시하는 BoundColumn을 추가하지만, 눈에 보이는 false로 PK 세트와 열을 데이터 바인딩 후.

<Columns>      
     <asp:BoundField HeaderText="PrimaryKey" DataField="ManagerID" /> 
     <asp:BoundField HeaderText="Manager" DataField="FullName" />          
    ....          
</Columns> 

서버 측 다음 PK 보안상의 이유로의 ViewState에 저장되지 않도록

ManagerList_GV.DataSource = ??; 
ManagerList_GV.DataBind(); 
ManagerList_GV.Columns[0].Visible = false; 

이 고의적이었다. 그런 다음 RowDeleting 이벤트를 추가하고

ManagerList_GV.Rows[e.RowIndex].Cells[0].Text; 
+0

재미있는 ..겠습니까 비주얼 스튜디오에 의해 생성 된 서브 루틴에서 전체 이러한 명령, ManagerList_GV_RowCommand (ByVal의 개체로 보낸 사람, GridViewCommandEventArgs으로 ByVal의 전자) 한 ManagerList_GV.RowCommand? 아니면 잘못된 서브 루틴으로 작업하고 있습니까? e.RowIndex가 null 인 것 같습니다 –

+0

LinkButton의 CommandName을 Delete로 설정하고 이벤트를 RowDeleting이라고합니다 – Fermin

관련 문제