2012-08-09 223 views
2

我目前有一個gridview,允許您通過單擊該行上的任何位置來選擇行。但是,有一個問題。 AutoGenerateSelectButton必須設置爲true。這意味着選擇按鈕現在可見並且是網格視圖的一部分。我想知道是否有辦法在不中斷網格大小的情況下隱藏它?隱藏GridView中的選擇按鈕

+0

你問是否有辦法隱藏選擇按鈕從呈現的標記? – Dan 2012-08-09 02:17:45

回答

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"; 
} 
+0

這是我最初嘗試的方法。儘管如此,它還是讓網格混亂了。行數變得很大,並且隨着標題變得不合時宜。我認爲這可能是因爲jQuery可自動滾動,並且不會影響標題。 – user1512593 2012-08-09 16:22:41

+0

你是否在'if(e.Row.RowType == DataControlRowType.DataRow){}'檢查後面有它?如果是這樣,它只會隱藏行並且不會影響頁眉/頁腳。這可能會搞砸你的桌面顯示。 – 2012-08-09 16:29:17

1

您可以隱藏整個行這樣

protected void grdView_OnDataBound(object sender, EventArgs e) 
{ 
    grdView.Rows[rowNumber].Visible = false; 
} 
+0

該方法似乎不起作用。由於某種原因,它不允許我的數據綁定。 – user1512593 2012-08-09 16:21:11

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; 
        } 
       } 
      } 
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的代碼隱藏最後一行,消除了隱藏的選擇按鈕與表頭混雜在一起的問題。

0

您可以隱藏整列,然後再次顯示你正在使用它完成後如下..

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

也將轉移標題列到左側,使他們正確的匹配打印等...

然後,當你需要再次顯示它,只需再次將屬性更改爲真。 這是VB語法,你可能會想在C#中使用[]作爲列索引。

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>