1

在我的gridview中,我有以下内容,如我在page_load中将sql与gridview绑定所示,因为我希望它在打开页面时加载。

SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source = localhost; Initial Catalog = MajorProject; Integrated Security= SSPI";
        conn.Open();

        DataSet ds = new DataSet();

        SqlDataAdapter da = new SqlDataAdapter("SELECT memberreportid, typeofcrime, crdatetime, address, detail, incidentdate, incidenttime, property, victim, suspect from memberreport", conn);
        da.Fill(ds);

        GWCase.DataSource = ds;
        GWCase.DataBind();

        conn.Close();

但是,我试图防止财产、受害者和嫌疑人列出现在网格视图中。我用了

Visible = false;

在我的网格视图中,但它完全删除了我的网格视图(当然)。

我尝试在我的gridview中使用如下所示的boundfield并将可见性设置为false以专门将列可见性设置为false

    <asp:GridView ID="GWCase" runat="server" BackColor="#CCCCCC" BorderColor="#999999" BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" ForeColor="Black" Width="100%" AutoGenerateSelectButton="True" OnSelectedIndexChanged="GWCase_SelectedIndexChanged">
        <FooterStyle BackColor="#CCCCCC" />
        <HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#CCCCCC" ForeColor="Black" HorizontalAlign="Left" />
        <RowStyle BackColor="White" />
        <SelectedRowStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
        <SortedAscendingCellStyle BackColor="#F1F1F1" />
        <SortedAscendingHeaderStyle BackColor="#808080" />
        <SortedDescendingCellStyle BackColor="#CAC9C9" />
        <SortedDescendingHeaderStyle BackColor="#383838" />

     <Columns>

       <asp:BoundField DataField="property" HeaderText="property" SortExpression="property" Visible="false"/>
       <asp:BoundField DataField="victim" HeaderText="victim" SortExpression="victim" Visible="false" />
       <asp:BoundField DataField="suspect" HeaderText="suspect" SortExpression="suspect" Visible="false" />

     </Columns>
    </asp:GridView>

但是,该列仍在显示中。如何从 gridview 中删除该 3 列。请不要让我从我的 sql 语句中删除 3 属性,因为我需要数据来实现更多功能。

我也试过这个我在这个线程中找到的方法

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        e.Row.Cells[7].Visible = false;
        e.Row.Cells[8].Visible = false;
        e.Row.Cells[9].Visible = false;
    }

但它也不起作用:/

问候。

4

2 回答 2

1

您需要将此代码添加到行创建事件中。

    protected void yourGrid_RowCreated(object sender, GridViewRowEventArgs e)
    {
    e.Row.Cells[7].Visible = false;
    e.Row.Cells[8].Visible = false;
    e.Row.Cells[9].Visible = false;
    }

编辑:

另一种选择是在将数据源分配给网格视图之后,在代码中的此行之后编写这些行

   GWCase.DataSource = ds;
   GWCase.DataBind();

   GWCase.Columns[7].Visible = false;
   GWCase.Columns[8].Visible = false;
   GWCase.Columns[9].Visible = false;
于 2013-07-31T08:12:24.227 回答
0

将 gridview 的属性设置AutoGenerateColumns为 false(默认为 true)。然后添加您想要在标签内显示的所有行,<Columns>就像您对不想显示的列所做的那样。只要您自动生成列,Columns 标记就不起作用。

于 2013-07-31T08:15:57.523 回答