2010-03-15 47 views
1
protected void GridView1_DataBound(object sender, EventArgs e) 
{ 
    GridView1.Columns[0].ItemStyle.Width = 400; 

    <asp:GridView ID="GridView1" runat="server" 
     DataSourceID="ObjectDataSource1" 

ObjectDataSource1返回数据表,但我找不到任何width属性那里,所以我想有GridView控件侧的选择,但即使是在数据绑定也一样,没有列...动态列宽

protected void GridView1_DataBound(object sender, EventArgs e) 
{ 
    if (GridView1.Columns.Count!=0) 
     GridView1.Columns[0].ItemStyle.Width = 800; 

问题:如何设置列宽在我的网格

ASP:

<asp:Panel id="Panel1" runat="server" ScrollBars="Auto" style="width:990px; border-style: outset; border-width: 4px;"> 
    <asp:Label ID="ERROR" runat="server"></asp:Label> 
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
     SelectMethod="GetReport" TypeName="SQF.SQF"> 
     <SelectParameters> 
      <asp:Parameter DefaultValue="2010" Name="Param1" Type="String" /> 
      <asp:Parameter DefaultValue="1" Name="Param2" Type="Int32" /> 
      <asp:Parameter DefaultValue="0" Name="Group" Type="Int32" /> 
      <asp:Parameter DefaultValue="0" Name="DayOfMonth" Type="Int32" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

    <asp:GridView ID="GridView1" runat="server" 
     DataSourceID="ObjectDataSource1" Width="591px" 
     CellPadding="4" ForeColor="#333333" 
     HorizontalAlign="Center" AllowPaging="True" PageSize="6" 
      onrowdatabound="GridView1_RowDataBound"> 
     <PagerSettings FirstPageText="&#1055;&#1077;&#1088;&#1074;&#1072;&#1103;" 
      LastPageText="&#1055;&#1086;&#1089;&#1083;&#1077;&#1076;&#1085;&#1103;&#1103;" 
      PageButtonCount="15" position="Bottom" /> 
       <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
       <PagerStyle CssClass="pagination" HorizontalAlign="Center" 
       VerticalAlign="Middle" 
      Font-Size="14pt" Wrap="True" BackColor="#284775" ForeColor="White"/> 
     <RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" 
      VerticalAlign="Middle" /> 
     <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" 
      VerticalAlign="Middle" /> 
     <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" 
      HorizontalAlign="Center" VerticalAlign="Middle" /> 
     <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" 
      Font-Names="Arial" /> 
     <EditRowStyle BackColor="#999999" HorizontalAlign="Center" /> 
     <AlternatingRowStyle BackColor="White" ForeColor="#284775" 
      HorizontalAlign="Center" /> 
    </asp:GridView> 

CSS:

.wide { 
border:3px solid black; 
width:400px; 
} 
css-content.css (строка 778) 
from tr 
element.style { 
color:#333333; 
} 
from table#ctl00_ContentPlaceHolder1_GridView1 
element.style { 
border-collapse:collapse; 
color:#333333; 
} 
from div#ctl00_ContentPlaceHolder1_Panel1 
element.style { 
border-style:outset; 
} 
from body 
body { 
color:#666666; 
font-family:Verdana,Arial,Helvetica,sans-serif; 
font-size:0.7em; 
line-height:1.4em; 
} 
+0

请说出你的问题,我不明白你在问什么。 – OverLex 2010-03-15 11:05:00

回答

1

如果你总是希望相同的宽度,我会用CSS做。你可以这样说:

GridView1.Columns[0].ItemCssClass = "wide"; 

而且在CSS:

.wide { width: 400px; } 

如果你设置的项目风格的宽度,即CSS ID在HTML重复每一个细胞都在此列,这至少它的标记少。

如果您使用自动生成的列,那么实际列集合是空的,你需要连接到RowDataBound事件是这样的:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Cells[0].CssClass = "wide"; 
} 

在你的GridView标记添加OnRowDataBound="GridView1_RowDataBound"

+0

GridView1.Columns [0] .ItemCss ... //没有这样的参数,甚至在这里没有列:( – Cynede 2010-03-15 12:33:53

+0

@nCdy - 如果你动态生成列,不会有任何列,你需要绑定到RowDataBound,我会更新一个例子 – 2010-03-15 12:47:30

+0

,这将工作缓慢:(是不是??不起作用:( – Cynede 2010-03-15 13:00:57