我目前有一个gridview,允许您通过单击该行的任意位置来选择行。但是,有一个问题。 AutoGenerateSelectButton必须设置为true。这意味着现在可以看到选择按钮,它是网格视图的一部分。我想知道是否有办法隐藏它而不会破坏网格尺寸?
答案 0 :(得分: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";
}
答案 1 :(得分:1)
您可以像这样隐藏整行
protected void grdView_OnDataBound(object sender, EventArgs e)
{
grdView.Rows[rowNumber].Visible = false;
}
答案 2 :(得分: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>
答案 3 :(得分: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;
}
}
}
答案 4 :(得分:0)
根据derek的回答,这就是我所做的
<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的代码隐藏最后一行,消除了隐藏的选择按钮与表格标题搞乱的问题。
答案 5 :(得分:0)
您可以隐藏整个列,然后在使用以下内容后再次显示它。
YourGridView.columns(0).Visible = False //Will hide the entire first column with all the select links in there.
还会将标题列向左移动,以便它们正确匹配以进行打印等...
然后,当您需要再次显示它时,只需再次将属性更改为true。 那个VB语法,您可能希望在C#中使用[]作为列索引。