2013-03-24 43 views
0

我有以下一段代碼。我沒有在我的gridview中定義任何綁定字段。我正在使用我的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

你可以做到這一點的OnRowDataBound事件gridview的。

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 
    } 
} 

這是電網呈現爲tabletrdt這樣你就可以使用CSS類網格添加到您的Gridview標記

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

我必須調用這個方法來改變每次頁面加載?我該如何執行這個方法?謝謝! – user1781830 2013-03-24 14:59:53

+0

它不是一個方法,它是一個'gridview'事件,並且您不必將它寫在page_load或任何地方。看到我的更新在答案 – 2013-03-24 15:01:41

+0

所以對不起,我是使用gridview的新手!所以我應該如何使用它! – user1781830 2013-03-24 15:03:38

0
0

我的解決方案如下。我有一個有2個定義列的網格,其餘的都是動態綁定的。我不知道爲什麼使用(e.Row.Cells [0] .Width = new Unit(「200px」);)設置列不起作用,但我找到了一個替代方案。此外,我的網格已啓用排序,因此linkbutton代碼。

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; 
     } 
    } 
相關問題