GridView两次显示相同的列

时间:2014-09-17 12:05:11

标签: c# asp.net gridview

我正在以这种方式截断GridView中的列Description文本:

 <asp:GridView ID="GridView1" CssClass="truncated" runat="server" AllowPaging="true" BackColor="White" 
                    BorderColor="#CCCCCC" BorderWidth="2px" CellPadding="2" CellSpacing="5" ForeColor="#000066" 
                    GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
                    <RowStyle BackColor="#F7F7F7" />
                    <AlternatingRowStyle BackColor="#E7E7FF" />
                    <FooterStyle BackColor="White" />
                    <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
                    <PagerStyle BackColor="White" ForeColor="#000066" 
                        HorizontalAlign="Center" />
                    <SortedAscendingCellStyle BackColor="#F1F1F1" />
                    <SortedAscendingHeaderStyle BackColor="#007DBB" />
                    <SortedDescendingCellStyle BackColor="#CAC9C9" />
                    <SortedDescendingHeaderStyle BackColor="#00547E" />
                    <Columns>
                      <asp:CommandField ShowSelectButton="true" ControlStyle-ForeColor="Red" SelectText="Select" HeaderText="Select" />

                      <asp:TemplateField HeaderStyle-ForeColor="White" HeaderText="Description">

                      <ItemTemplate>
                      <div style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100px">
                       <asp:Label ID="review" runat="server" Text='<%# Bind("Description") %>' Tooltip='<%#Bind("Description")%>'></asp:Label>
                      </div>
                      </ItemTemplate>
                      </asp:TemplateField>

                    </Columns>

 </asp:GridView>

现在问题是Book tabel有10列,如果我从数据库中选择所有列,如下所示:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Book", con);
    DataSet ds = new DataSet();
    da.Fill(ds);
    GridView1.DataSource = ds;
    GridView1.DataBind();

Description在GridView中显示两次。第一个Description显示带有工具提示的截断文本,第二个Description显示全文。

我知道我是Bind - 在GridView中并在后面的代码中选择SELECT命令,但我只需要在浏览器的GridView中使用工具提示。

2 个答案:

答案 0 :(得分:3)

您必须向Gridview添加属性:

Autogeneratecolumns=false

这将解决您的问题。

以下是财产:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.autogeneratecolumns(v=vs.110).aspx

将如下:

<asp:GridView ID="GridView1" AutoGenerateColumns="false" CssClass="truncated" runat="server" AllowPaging="true" BackColor="White" 
                    BorderColor="#CCCCCC" BorderWidth="2px" CellPadding="2" CellSpacing="5" ForeColor="#000066" 
                    GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">

答案 1 :(得分:0)

我的问题是我是以编程方式在代码中设置列,所以我绑定了已设置的列。解决方案是在设置列之前检查列是否存在:

if (gvViewStudents.Columns.Count <= 0) 

这解决了我的问题,列显示了两次。