Как скрыть столбец сетки в событии нажатия кнопки вне сетки - PullRequest
0 голосов
/ 13 октября 2018

У меня есть gridview, как показано ниже, и я хочу спрятать столбец с именем FREQ_BAND, второй столбец при нажатии кнопки с именем btnPmtCalculation, который находится вне вида сетки. Как это сделать?Я дошел до этого кода, но не смог продолжить

<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;
            }
        }}

Ответы [ 4 ]

0 голосов
/ 13 октября 2018

Попробуйте это:

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
    gvSpectrum.Columns[columnindex].Visible = false;
    //OR
    gvSpectrum.Columns["columnname"].Visible = false;
}
0 голосов
/ 13 октября 2018

Простой, просто скрыть столбец в нажатие кнопки.

protected void btnPmtCalculation_Click(object sender, EventArgs e)
{
    gvSpectrum.Columns[i].Visible = false;
}
0 голосов
/ 13 октября 2018

вы можете изменить свой код следующим образом:

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;

        }
}
0 голосов
/ 13 октября 2018

Вы можете попробовать это:

OnRowCreated

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

Если вы не предпочитаете жестко закодированный индекс, единственное решение, которое я могу предложить, этопредоставьте HeaderText для GridViewColumn, а затем найдите столбец, используя этот 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;
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...