问题1:现在从工具箱里直接拖了一个DataGrid,也没设置什么,然后从数据库里读出来一个DataSet,然后把DataGrid和DataSet绑定了,这种情况下,我怎么才能设置每列的宽度呢,我想要固定宽度,就是datagrid.Columns[0].ItemStyle.Width = 40;的这种,可是这样他会说 索引超出范围。必须为非负值并小于集合大小。问题2:然后呢,我设置了固定宽度之后如果那一列的文本很长的话,会换行显示,怎么样才能让他不换行呢,就是只能显示一部分内容呢以上两个问题,求教各位,还请帮忙解答下,先谢

解决方案 »

  1.   

    都说.net是傻瓜似的开发但是我们.net程序员不能做傻瓜你可以这样写
    <asp:datagrid id="GuestInfo" runat="server" width="100%" HorizontalAlign="Center" CellSpacing="0"
    GridLines="None"  BorderWidth="0px" AutoGenerateColumns="False" CellPadding="0" CssClass="table_list2">
    <ItemStyle HorizontalAlign="Center" Height="20px" BackColor="White"></ItemStyle>
    <HeaderStyle HorizontalAlign="Center" Height="22px" CssClass="table_list_title_bg"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="选择">
    <HeaderStyle Width="36px" ></HeaderStyle>
    <ItemTemplate>
    <asp:CheckBox ID="CheckClient" Runat="server"></asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="&lt;nobr&gt;客人ID&lt;/nobr&gt;">
    <HeaderStyle HorizontalAlign="Center" Width="30px"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    <ItemTemplate>
    <asp:Label ID="lblGuestID" Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"GuestID")%>'>
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="客人姓名">
    <HeaderStyle Width="64px" ></HeaderStyle>
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.GuestName").ToString().Trim() %>' ID="lblGuestName">
    </asp:Label>
    </ItemTemplate>
    </asp:TemplateColumn>

    </asp:datagrid>
      

  2.   

    1、 <HeaderStyle Width="64px“ ></HeaderStyle>2、      <ItemTemplate>
                                            <nobr>
                <%# DataBinder.Eval(Container, "DataItem.Summary").ToString().Trim()%>
                </nobr>
                                        </ItemTemplate>
      

  3.   

    难道一定要把每一列都在这里列出来才能改吗,有没有可以不用列出来的,这里我只保留编辑,删除,选择这3列,其他的我不列,因为可能这个datagrid可能会显示不同的datatable,这样要怎么改
      

  4.   

    this.DataGrid1.Columns.Count这个值 就是你的GridView列数保证你的索引小于这个COunt就可以了datagrid.Columns[0].ItemStyle.Width = 40
      

  5.   

    ItemStyle-Width="200"
    <asp:TemplateColumn>   
      <ItemTemplate>   
     <%# DataBinder.Eval(Container.DataItem,"Title").ToString().Length>10?DataBinder.Eval(Container.DataItem,"Title").ToString().Substring(0,10)+".":""%>  
      </ItemTemplate>   
      </asp:TemplateColumn>