2014-01-27 3 views
1

HI 코더 데이터가 데이터베이스에서 오는 gridview가 있습니다. 이제 모든 행의 ID가 동일합니다. 그리드 뷰의 첫 번째 행만 표시하고 나머지는 숨기고 싶습니다. 그러나 그들의 가치가 아니라 나는 그들을 그냥 숨 깁니다. 나는 라이트 박스를 가지고 있기 때문에 그들의 가치를 원한다. 무작위로 생성 된 gridview 행을 숨기는 방법

내 코드입니다 :

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" 
     AutoGenerateColumns="False" PageSize="1" PersistedSelection="true" 
    DatakeyNames="pptId,Priority"> 
     <Columns> 

      <asp:TemplateField HeaderText="pptId" Visible="false"> 
       <ItemTemplate> 
        <asp:Label ID="lblpptId" runat="server" Text='<%# Bind("pptId") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField>  
      <asp:TemplateField HeaderText="Priority" Visible="false"> 
       <ItemTemplate> 
        <asp:Label ID="lblPriority" runat="server" Text='<%# Bind("Priority") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="View PPT"> 
       <ItemTemplate> 
        <a id="imageLink" href='<%# Eval("Imageurl") %>' title='<%#Eval("Description") %>' 
         rel="lightbox[Brussels]" runat="server">Start PPT</a> 
       </ItemTemplate> 
      </asp:TemplateField>     
     </Columns> 
     <AlternatingRowStyle BackColor="White" /> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#EFF3FB" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
     </asp:GridView> 

편집 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    BindModule(); 

} 
protected void BindModule() 
{ 
    try 
    { 
     con.Open(); 
     string id = Request.QueryString["pptId"].ToString(); 
     //Query to get Imagesurl and Description from database 
     SqlCommand command = new SqlCommand("select * from Image_Master where pptId='" + id + "' and IsEnable='True' order by Priority", con); 
     dt = new DataTable(); 
     SqlDataAdapter da = new SqlDataAdapter(command); 
     da.Fill(dt);   
     GridView1.DataSource = dt; 
     GridView1.DataBind();      
     GridView1.Dispose(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write("Error occured : " + ex.Message.ToString()); 
    } 
    finally 
    { 
     con.Close(); 
    } 
} 

위의 코드 pptId의 각 행에 대해 동일합니다, 내 이미지는 내가 원하는 것은 단지 보여주기 위해 내 gridview에 내부 보여 첫 번째 이미지는 나머지 값은 숨기지 만 그 값은 숨 깁니다.

어떻게해야합니까? ..... 미리 감사드립니다.

+0

그래서 다른 행을 삭제하지 않고 첫 번째 행을 표시하고 싶습니까? – Plue

+0

그래, 나는 그들을 삭제하고 싶지 않다. 나는 단지 그들을 숨기고 싶다. pptId는 각 줄마다 같지만 imageurl과 priority는 다르다.당신이 말할 수있는 것처럼 1 ppt 다른 우선 순위와 5 개의 이미지를 가지고 그래서 첫 번째 ppt의 이미지를 보여주고 있지만 gridview에서 나는 오직 첫 번째와 그들 중 나머지를 숨겨 그래서 나는 그것에 대한 나의 라이트 박스가 작동하도록 그 값을 가지고있다 – Amitesh

+0

잘 모르겠다. 그것을 얻으십시오 ... 왜 priotity와 imageurl가 다른 경우에 전체 줄을 숨기고 있습니까? 각 행에 대해 첫 번째 셀을 숨기지 않겠습니까? – Plue

답변

1

CSS로이 작업을 수행 할 수 없습니까?

https://stackoverflow.com/a/21166162/1256868

:

http://css-tricks.com/how-nth-child-works/

내가 여기 다른 답변에서 설명했습니다 여기에서 n 번째 자식 CSS 선택기에 대한 설명이 있습니다

table tr:nth-child(n + 3) { 
    display: none; 
} 

생성 된 테이블에 클래스 또는 정적 ID가 필요하므로 해당 테이블을 단일화 할 수 있지만 여전히 ...

편집 다음과 같은 코멘트 :

시도가있는 gridview에 CSS 클래스를 추가하고 다음과 같이 위의 CSS를 추가 :

는 는 는

Asp.net이있는 gridview에서 HTML 테이블을 생성합니다, 그 이유

<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
     table.Grid tr:nth-child(n + 3) { 
      display: none; 
     } 
    </style> 
</head> 
<body> 
    <form runat="server"> 
    <asp:GridView runat="server" CssClass="Grid"> 
     <%--Your templates here--%> 
    </asp:GridView> 
    </form> 
</body> 
</html> 
스타일을 테이블에 적용해야합니다. 브라우저는 어떤 asp.net 코드도 보지 못합니다. 이 코드는 단순히 브라우저가 표시 방법을 알고있는 html을 생성하는 방법입니다. 더 나은 IE 지원에 대한

편집 :

나는 IE9 최대가 n 번째의 아이를 지원하기로 무엇을 요구하는 것은, IE8 (아마도 7) 지원을 것 같다. IE7 이상을 지원하려면 더 나은 지원을 제공하는 + 선택기를 사용하도록 CSS를 변경하십시오.

table.Grid tr + tr + tr{  
    display: none; 
} 

+ 선택자는 인접한 형제 선택 도구입니다. 따라서 셀렉터 tr + tr은 다른 tr 요소를 즉시 따르는 tr을 선택합니다. 더 자세한 설명은 http://css-tricks.com/child-and-sibling-selectors/ (특히 '인접 형제 조합'섹션 참조)을 참조하십시오.

+0

를 본다 나의 친구 나는 CSS로 그것을 할 수있다 그러나 나의 이미지 경로는 나가 그것을 사용할 수있는 방법 말하는 데이터베이스에서 온다. 나는 다만 그것을하는 것이 가능하다는 것을 다만 요구하고있다 www.slideshare.net 사이트와 같지만 자동 슬라이드 쇼가 있습니다 – Amitesh

+0

데이터의 출처는 중요하지 않습니다. 위의 CSS를 사용하면 첫 번째 행을 제외한 모든 행을 숨길 수 있습니다. 행은 여전히 ​​생성 된 마크 업에 있으며 자바 스크립트를 통해 계속 액세스 할 수 있지만 화면에는 표시되지 않습니다. – rusmus

+0

안녕하세요 rusmus 그들은 무작위로 행과 열을 생성했습니다 – Amitesh

0

나는 당신이 찾고있는 무슨 생각 :

for(int i = 1; i < GridView1.Rows.Count; i++) 
{ 
    GridView1.Rows[i].Visible = false; 
} 

뒤에 코드에서 GridView1에 데이터 소스를 바인딩 후 사용.

+0

코드가 좋음을 확인해 주셔서 감사합니다. 그러나 gridview의 다른 행의 값을 false로 지정하고 싶습니다. 기능적입니다 .. 내 평판이 낮아서 답변 메이트를 수락 할 수 없다는 것을 알고 싶습니다. – Amitesh

+0

라이트 박스로 어떻게 가치에 액세스합니까? – Plue

+0

나는 나의 질문을 편집한다 c 나의 최신 개정하는 질문은 나의 aspx 페이지 부호 – Amitesh

관련 문제