2013-03-24 46 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; 
     } 
    } 
相关问题