Как скрыть столбец, но при этом получить доступ к его значению? - PullRequest
0 голосов
/ 15 марта 2011

У меня есть сетка с некоторыми столбцами. Я хочу скрыть один столбец, но по-прежнему обращаюсь к его значению при выборе записи.

Может ли кто-нибудь помочь мне добиться этого?

Любая помощь приветствуется.

Это мой gridview: OutlookID - это столбец, который нужно скрыть! <asp:GridView ID="gvOutlookMeldingen" runat="server" AllowSorting="True" AutoGenerateColumns="False" AutoGenerateSelectButton="True" onselectedindexchanged="GridView_SelectedIndexChanged"> <Columns> <asp:BoundField DataField="Melder" HeaderText="Melder" /> <asp:BoundField DataField="Onderwerp" HeaderText="Onderwerp" /> <asp:TemplateField HeaderText="Omschrijving"> <ItemTemplate> <div style="overflow:auto; width: 500px; height: 150px;"> <asp:Label ID="lblOmschrijving" runat="server" Text='<%# Bind("Omschrijving")%>'></asp:Label> </div> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Meldingsdatum" HeaderText="Meldingsdatum" /> <asp:BoundField DataField="OutlookID" HeaderText="OutlookID" Visible="false" /> </Columns> </asp:GridView>

Это код, когда я выбираю запись:

Label lblOmschrijving = (Label)gvOutlookMeldingen.SelectedRow.FindControl("lblOmschrijving");
            //Label lblOutlookID = (Label)gvOutlookMeldingen.SelectedRow.FindControl("lblOutlookID");

            Response.Redirect("Detailscherm.aspx?"
                + "melder=" + Server.UrlEncode(gvOutlookMeldingen.SelectedRow.Cells[1].Text)
                + "&meldingsdatum=" + gvOutlookMeldingen.SelectedRow.Cells[4].Text
                + "&onderwerp=" + Server.UrlEncode(gvOutlookMeldingen.SelectedRow.Cells[2].Text)
                + "&outlookid=" + Server.UrlEncode(gvOutlookMeldingen.SelectedRow.Cells[5].Text)
                + "&omschrijving=" + Server.UrlEncode(lblOmschrijving.Text)
                + "&niv1=" + ""
                + "&niv2=" + "");

Ответы [ 6 ]

4 голосов
/ 15 марта 2011

Установите этот код после того, как вы связали данные. Чтобы получить эту функциональность, я делаю это:

MyGridView.Columns[0].visible = true;
MyGridView.DataBind();
MyGridView.Columns[0].visible = false;

При этом первый столбец скрыт, но вы должны иметь возможность получить доступ к его значению.

0 голосов
/ 12 августа 2013

У меня была такая же проблема.

Вы не можете скрыть столбец и сохранить значение в коде позади.

Вы должны скрыть его прямо на стороне клиента с помощью JavaScript.

Я сделал это:

На моем CSS или странице:

<style type="text/css">
.hiddencol
{
    display: none;
}
.viscol
{
    display: block;
}
</style>

Затем добавьте стиль в BoundField gridViewer.

Например:

        <asp:BoundField DataField="AgentGUID" HeaderText="AgentGUID" ReadOnly="True" SortExpression="AgentGUID"
            meta:resourcekey="BoundFieldResource1">
            <HeaderStyle CssClass="hiddencol" />
            <ItemStyle CssClass="hiddencol" />
            <FooterStyle CssClass="hiddencol" />
        </asp:BoundField>
0 голосов
/ 03 мая 2013

когда мы устанавливаем видимость элемента управления false во время разработки, которое не будет отображаться. Попробуйте установите visiblity = false в gridView rowCreated Event. В приведенном ниже коде я задаю видимость второго столбца = false

защищенный void grid_RowCreated (отправитель объекта, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells [2] .Visible = false;

        }
        if (e.Row.RowType == DataControlRowType.Header)
        {
            e.Row.Cells[2].Visible = false;

        }
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            e.Row.Cells[2].Visible = false;

        }
    }

и теперь попробуйте получить значение. Конечно, вы получите значение.

0 голосов
/ 14 июня 2011

Вы также можете установить его невидимым на стороне клиента. С Javascript.

document.getElementById(myObject).visible = "false";
0 голосов
/ 15 марта 2011

Создать шаблон столбца вместо вашей кнопки SELECT.Установите

PostbackUrl = '<% # Eval ("somepage.aspx? Id = {0}", "требуемый столбец")%>'

.Удалить колонку через дизайнера.

0 голосов
/ 15 марта 2011

Если вы не хотите, чтобы данные были доступны на стороне клиента, вам придется установить на стороне сервера Visible = "False" свойство любого DataControlField , который вы используете (предпочтительно вразметки).Вы по-прежнему сможете получить доступ к столбцу со стороны сервера.

Возможно, вы захотите использовать свойство GridView DataKeys - оно может быть более подходящим для ваших нужд.

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