簡體   English   中英

如何在GridView側面的按鈕單擊事件中隱藏GridView列

[英]How to hide a gridview column in a button click event out side gridview

我有一個如下所示的gridview ,我想隱藏一個名為FREQ_BAND列,單擊按鈕的第二列名為btnPmtCalculation ,它位於gridview的外側。如何執行此操作? 我直到此代碼,但無法繼續

<asp:gridview id="gvSpectrum" runat="server" headerstyle-cssclass="HomeGridHeader"
                        allowpaging="True" rowstyle-wrap="false" autogeneratecolumns="False" cssclass="table table-striped table-bordered"
                        cellpadding="4" datakeynames="FEES_CALC_FORMULA,BAND_ID,BAND,FREQ_BAND,SPECTRUM_ID" horizontalalign="Left" showfooter="true"
                        pagesize="10" onpageindexchanging="gvSpectrum_PageIndexChanging" onrowcommand="gvSpectrum_RowCommand">
                          <Columns>
                            <asp:BoundField DataField = "sl_num" HeaderText="SN" />
                            <asp:BoundField DataField = "FREQ_BAND" HeaderText="Frequency Band" />
                            <asp:BoundField DataField = "BW" HeaderText="Bandwidth / Quantity" />
                            <asp:BoundField DataField = "RANGE" HeaderText="Range" />
                          </Columns>
</asp:gridview>
<asp:button id="btnPmtCalculation" runat="server" text="Generate Permenant Sepctrum Invoice" onclick="btnPmtCalculation_Click">

我做的代碼如下所示

 protected void btnPmtCalculation_Click(object sender, EventArgs e)
    {
      bool  pemenant = true;
      int spectrum_id = 0;
      //Button btn = (Button)sender;

      ////Get the row that contains this button
      //GridViewRow gvr = (GridViewRow)btn.NamingContainer;

        foreach (GridViewRow row in gvSpectrum.Rows)
        {
            if (row.RowType == DataControlRowType.Header)
            {
                row.Cells[1].Visible = true;
            }
        }}

您可以嘗試以下方法:

OnRowCreated

protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
         e.Row.Cells[columnIndex].Visible = false;
}

如果您不喜歡硬編碼的索引,那么我建議的唯一解決方法是為GridViewColumn提供HeaderText,然后使用該HeaderText查找列。

protected void UsersGrid_RowCreated(object sender, GridViewRowEventArgs e)
{
    ((DataControlField)UsersGrid.Columns
            .Cast<DataControlField>()
            .Where(fld => fld.HeaderText == "Email")
            .SingleOrDefault()).Visible = false;
}

OnButtonClick

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
    gvSpectrum.Columns[Index].Visible = false;
}

在此處輸入圖片說明

簡單,只需單擊按鈕即可隱藏該列。

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
    gvSpectrum.Columns[i].Visible = false;
}

您可以通過以下方式更改代碼:

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
          bool  pemenant = true;
          int spectrum_id = 0;
          int columnIndex = 1;
          gvSpectrum.Columns[columnIndex].Visible = false;
}

'columnIndex'列號用於隱藏它

或者,如果您想隱藏列標題文本,請使用以下代碼:

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
        foreach(DataControlField col in gvSpectrum.Columns)
        {
            if (col.HeaderText == "Email")
                col.Visible = false;

        }
}

嘗試這個:

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
    gvSpectrum.Columns[columnindex].Visible = false;
    //OR
    gvSpectrum.Columns["columnname"].Visible = false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM