2013-03-24 5 views
0

다음 코드가 있습니다. 내 gridview에서 어떤 boundfields 정의하지 않았다. 내 aspx.cs 파일 대신 SQL 쿼리를 사용하여 데이터를 검색하고 있습니다. 각 열 0, 1, 2의 너비를 조정할 수 있습니까? 내가 볼 수있는 방법이 있습니까? 나는 많은 방법을 시도했지만 여전히 작동하지 않습니다. 도와주세요!rowdatabound 이벤트 내부의 Gridview의 열 너비를 설정합니다.

<asp:GridView ID="surgicalGridView" runat="server" 
    CaptionAlign="Top" HorizontalAlign="Justify" 
    DataKeyNames="id" onselectedindexchanged="surgicalGridView_SelectedIndexChanged" 
    ToolTip="Excel File Download Tool" CellPadding="4" ForeColor="#333333" 
    GridLines="None" Width="854px"> 

    <RowStyle BackColor="#E3EAEB" /> 
     <Columns> 
     <asp:CommandField ShowSelectButton="True" SelectText="Download" 
       ControlStyle-ForeColor="Blue"> 
<ControlStyle ForeColor="Blue"></ControlStyle> 
      </asp:CommandField> 
     </Columns> 
    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
    <EditRowStyle BackColor="#7C6F57" /> 
    <AlternatingRowStyle BackColor="White" /> 
     <SortedAscendingCellStyle BackColor="#F8FAFA" /> 
     <SortedAscendingHeaderStyle BackColor="#246B61" /> 
     <SortedDescendingCellStyle BackColor="#D4DFE1" /> 
     <SortedDescendingHeaderStyle BackColor="#15524A" /> 
    </asp:GridView> 
    <br /> 

답변

4

당신은 gridviewOnRowDataBound 이벤트에 그렇게 할 수 있습니다. 그리드 그래서 당신은 그리드에 대한 CSS 클래스를 사용할 수 있습니다 tabletrdt로 렌더링으로

protected void surgicalGridView_RowDataBound(object o, GridViewRowEventArgs e) 
{   
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Cells[0].Width = new Unit("200px"); 
     e.Row.Cells[1].Width = new Unit("400px"); 
     // and so on 
    } 
} 

Gridview 마크 업

<asp:GridView ............................... 
     onrowdatabound="surgicalGridView_RowDataBound"> // just add this event and execute the above code 
</asp:GridView> 
+0

페이지를로드 할 때마다이 메소드를 호출해야합니다. 이 메소드를 정확히 어떻게 실행합니까? 감사! – user1781830

+0

그 메소드가 아니고, 그것의'gridview' 이벤트와 당신은 page_load 나 어디서든 쓸 필요가 없습니다. 대답은 –

+0

에 대한 업데이트를 참조하십시오. 미안 해요. gridview를 처음 사용했습니다! 그래서 정확히 어떻게 사용해야합니까! – user1781830

0

이 추가.
여기에서 열의 너비를 설정할 수 있습니다. 클래스에서
당신은 포스트
.NET Gridview themes examples

체크 아웃이 링크에 td, td+td, td+td+td

처럼 따라 사용할 수 있습니다.

http://icant.co.uk/csstablegallery/index.php?css=69#r69

http://mattberseth2.com/demo/ 코드 다운로드와 gridview에 사용자 지정 많습니다.

Paging

Paging With Slider

Sorting with sort icons

일부 더 많은 테마

http://mattberseth2.com/demo/Default.aspx?Name=A+YUI+DataTable+Styled+GridView&Filter=All http://mattberseth.com/blog/2007/11/5_gridview_themes_based_on_goo.html

alt text http://mattberseth.com/WindowsLiveWriter/FiveGridViewThemesbasedon_11611/image%7B0%7D%5B5%5D.png

0

내 솔루션은 아래 있습니다. 두 개의 정의 된 열이 있고 나머지는 동적으로 바인딩 된 표가 있습니다. 왜 (e.Row.Cells [0] .Width = new Unit ("200px");)로 열을 설정했는지 모르겠지만 대안을 찾았습니다. 또한, 내 그리드 정렬, 따라서 링크 버튼 코드를 사용할 수 있습니다.

const int FirstControl = 0; 
const int GriDefinedFieldsCount = 2; 

protected void grd_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     int col = 0; 
     foreach (DataColumn dc in SiteManager.Reports.ReportData.Columns) 
     { 
      if (dc.ColumnName == "Notes") 
      { 
       LinkButton lnk = (e.Row.Cells[col + GriDefinedFieldsCount].Controls[FirstControl] as LinkButton); 
       lnk.Width = Unit.Pixel(300); 
      } 
      col += 1; 
     } 
    } 
관련 문제