2

我目前有一个gridview,允许您通过单击该行的任意位置来选择该行。但是,有一个问题。AutoGenerateSelectButton 必须设置为 true。这意味着选择按钮现在可见并且是网格视图的一部分。我想知道是否有办法在不破坏网格大小的情况下隐藏它?

4

6 回答 6

5

您是否考虑过使用 CSS 隐藏该列?这可以在以下RowDataBound事件中完成:

protected void yourGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Cells[0].Style["display"] = "none";
    // or e.Row.Cells[0].CssClass = "hidden-cell";
}
于 2012-08-09T04:15:17.753 回答
1

您可以像这样隐藏整行

protected void grdView_OnDataBound(object sender, EventArgs e)
{
    grdView.Rows[rowNumber].Visible = false;
}
于 2012-08-09T04:41:18.167 回答
1
                <asp:GridView ID="gv" runat="server" Width="100%" AutoGenerateColumns="False"
                    DataKeyNames="BillingAccountNo" OnRowDataBound="gv_RowDataBound"
                    OnSelectedIndexChanged="dgBillingInformation_SelectedIndexChanged">
                    <Columns>

                        <asp:BoundField DataField="field" HeaderText="field" />
                        <asp:BoundField DataField="field" HeaderText="field" />
                        <asp:CommandField ShowSelectButton="true" ButtonType="Button" ControlStyle-CssClass="hidden" ItemStyle-CssClass="hidden" HeaderStyle-CssClass="hidden" FooterStyle-CssClass="hidden" />
                    </Columns>                     
                </asp:GridView>
于 2017-06-08T08:03:32.033 回答
0

检查每一行并根据需要隐藏/调整标签:

foreach (GridViewRow r in gv.Rows)
            {
                if (r.RowType == DataControlRowType.DataRow)
                {
                    TableCell editCell = r.Cells[0];
                    if (editCell.Controls.Count > 0)
                    {
                        LinkButton editControl = editCell.Controls[0] as LinkButton;
                        // control[1] is a literal space
                        LinkButton selectControl = editCell.Controls[2] as LinkButton;
                        editControl.Text = "New Edit Label Text";
                        //Ensure "Select" control, not "Cancel" control 
                        selectControl.Text = selectControl.Text == "Select" ? "New Select Label Text" : selectControl.Text;
                    }
                }
            }
于 2012-08-23T19:11:57.480 回答
0

基于德里克的回答,这就是我所做的

<asp:Panel ID="pnl" runat="server" Visible="false">
<asp:GridView ID="gv" runat="server" Width="100%" AutoGenerateColumns="False"
    DataKeyNames="BillingAccountNo" OnRowDataBound="gv_RowDataBound"
    OnSelectedIndexChanged="dgBillingInformation_SelectedIndexChanged">
    <Columns>>
        <asp:BoundField DataField="field" HeaderText="field" />
        <asp:BoundField DataField="field" HeaderText="field" />
        <asp:CommandField ShowSelectButton="true" ButtonType="Button" Visible="true" />
    </Columns>
    <SelectedRowStyle BackColor="LightCyan" ForeColor="DarkBlue" Font-Bold="true" />
</asp:GridView>

我将选择按钮放在gridview 的末尾,并在后面使用derek 的代码来掩盖最后一行,从而消除了隐藏的选择按钮与表头混淆的问题。

于 2013-07-12T06:56:27.803 回答
0

您可以使用以下命令隐藏整个列,然后在完成后再次显示它。

YourGridView.columns(0).Visible = False //Will hide the entire first column with all the select links in there. 

还将标题列向左移动,以便它们正确匹配以进行打印等...

然后当你需要再次显示时,只需再次将属性更改为true即可。这是 VB 语法,您可能希望在 C# 中使用 [] 作为列索引。

于 2016-09-28T17:01:07.633 回答