2013-07-31 13 views
1

내 gridview에 다음과 같은 것들이 내 page_load에서 gridview와 SQL의 바인딩에 나와있는 것처럼 내가 페이지를 열 때로드 싶어요.gridview에서 특정 값 (열)을 숨기는 방법은 무엇입니까?

SqlConnection conn = new SqlConnection(); 
     conn.ConnectionString = "Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI"; 
     conn.Open(); 

     DataSet ds = new DataSet(); 

     SqlDataAdapter da = new SqlDataAdapter("SELECT memberreportid, typeofcrime, crdatetime, address, detail, incidentdate, incidenttime, property, victim, suspect from memberreport", conn); 
     da.Fill(ds); 

     GWCase.DataSource = ds; 
     GWCase.DataBind(); 

     conn.Close(); 

그러나 속성, 피해자 및 용의자 열이 gridview에 나타나지 않도록하려고합니다. 내가 사용했다

Visible = false; 

내 gridview하지만 완전히 내 gridview (물론) 제거합니다. 제 gridview에 이하에 나타내는 구체적

<asp:GridView ID="GWCase" runat="server" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black" Width="100%" AutoGenerateSelectButton="True" OnSelectedIndexChanged="GWCase_SelectedIndexChanged"> 
     <FooterStyle BackColor="#CCCCCC" /> 
     <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" /> 
     <RowStyle BackColor="White" /> 
     <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
     <SortedAscendingHeaderStyle BackColor="#808080" /> 
     <SortedDescendingCellStyle BackColor="#CAC9C9" /> 
     <SortedDescendingHeaderStyle BackColor="#383838" /> 

    <Columns> 

     <asp:BoundField DataField="property" HeaderText="property" SortExpression="property" Visible="false"/> 
     <asp:BoundField DataField="victim" HeaderText="victim" SortExpression="victim" Visible="false" /> 
     <asp:BoundField DataField="suspect" HeaderText="suspect" SortExpression="suspect" Visible="false" /> 

    </Columns> 
    </asp:GridView> 

은 그러나 열이 계속 표시되는 거짓 열 가시성을 설정할 거짓 가시성 설정된

난 boundfield하여 시도. gridview에서 해당 3 열을 어떻게 제거합니까? 제발 추가 기능에 대한 데이터를 필요로 내 SQL 문에서 3 특성을 제거하도록 요청하지 마십시오.

또한 SO

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     e.Row.Cells[7].Visible = false; 
     e.Row.Cells[8].Visible = false; 
     e.Row.Cells[9].Visible = false; 
    } 

에 내가이 thread에있는이 방법을 시도하지만 잘 작동 didnt는 :/

감사합니다.

답변

1

행 생성 이벤트에이 코드를 추가해야합니다.

protected void yourGrid_RowCreated(object sender, GridViewRowEventArgs e) 
    { 
    e.Row.Cells[7].Visible = false; 
    e.Row.Cells[8].Visible = false; 
    e.Row.Cells[9].Visible = false; 
    } 

편집 :

그리드보기에 데이터 소스를 할당 한 후에 당신이 당신의 gridview의 재산 AutoGenerateColumns로 설정 코드

GWCase.DataSource = ds; 
    GWCase.DataBind(); 

    GWCase.Columns[7].Visible = false; 
    GWCase.Columns[8].Visible = false; 
    GWCase.Columns[9].Visible = false; 
+0

여전히 동일합니다 –

+0

@TeoChuenWeiBryan 업데이트 된 답변보기 – Ehsan

+0

내 데이터 소스 및 바인딩을 내 page_load에 배치했습니다. 그리고 내가 page_load에 붙여 넣으려고한다면'Error 'System.EventArgs'에 'Row'에 대한 정의가없고 'System'유형의 첫 번째 인수를 허용하는 확장 메소드 'Row'가 없습니다. EventArgs '를 찾을 수 있습니다 (사용 지시문이나 어셈블리 참조가 누락 되었습니까?)' –

0

이 줄 뒤에 다음 줄 를 작성하는 것이 또 다른 옵션이 될 수 있습니다 false (기본적으로 true)입니다. 그런 다음 표시하지 않으려는 열로 수행 한 것처럼 <Columns> 태그 안에 표시하려는 모든 행을 추가하십시오. Columns 태그는 열을 자동으로 생성하는 한 아무런 효과가 없습니다.

+0

그러나 내 열 및 경계 필드 구문이 올바른지 묻는 수 있습니까? 내 이해에서 Datafield는 내 데이터베이스 이름, headertext는 gridview 헤더에 표시되지만 sortexpression은 무엇입니까. 내가 봤 거든 그리고 그것은 정말 필요 없어 데이터를 정렬 말합니다. 그냥 지울 수 있을까요? –

+0

예, 귀하의 구문이 나에게 맞는 것 같습니다. DataField와 HeaderText에 대한 여러분의 이해가 정확합니다. 사용자가 GridView의 특정 열을 정렬하지 않도록하려면 SortExpression을 제거하면됩니다. HeaderText는 사용자가 열 머리글 텍스트를 클릭 할 때 정렬 할 열의 데이터베이스 이름입니다. – Rob

+0

흠 나는 그것을했고 나는 또한 시야를 제거했다. 그러나, 나는이 구문'lblproperty '를 사용했다.텍스트 = GWCase.SelectedRow.Cells [8]. 텍스트; lblvictim.Text = GWCase.SelectedRow.Cells [9]. 텍스트; lblsuspect.Text = GWCase.SelectedRow.Cells [10] .Text;'행을 선택했지만 레이블에 아무 것도 표시하지 않을 때 레이블에 3 열의 값을 표시합니다. –