none
vs2010 Невидимые колонки в GridView RRS feed

  • Вопрос

  • Здравствуйте!

    Если я делаю какие-то колонки в GridView скрытыми, то я не могу извлечь из ячеек, кот. принадлежат этим колонкам, данные (их значение  GridView.Rows(0).Cells(i).text = "", где i - скрытый столбец). Но эти столбцы связаны с данными в таблице, и эти данные мне нужны. Можно ли (и как) эти данные извлечь?

    14 февраля 2013 г. 20:21

Ответы

  • Привет

    Попробуйте еще одно решение с помощью CSS, как предлагается здесь - вроде должно решить вашу проблему:

    <style>
    .hidden {display:none;}
    </style>
    ...
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="Id" ItemStyle-CssClass="hidden"
                HeaderStyle-CssClass="hidden" />
            <asp:BoundField DataField="Title" />
        </Columns>
    </asp:GridView>


    Для связи [mail]

    • Помечено в качестве ответа YatajgaEditor 20 февраля 2013 г. 19:18
    19 февраля 2013 г. 7:05
    Модератор

Все ответы

  • А как Вы именно их скрываете? Есть несколько способов, вплоть до того, что они не рендерятся на клиенте, поэтому и нельзя извлечь их значения.
    15 февраля 2013 г. 5:58
    Модератор
  • Я в теге (serviceid - это то поле в таблице, кот. меня интересует)

       <Columns>

           <asp:BoundField DataField="serviceid" HeaderText=""  ReadOnly="True" >

      </Columns>

    ставлю  Visible=false". Колонка принадлежит GridView, а он запускается на сервере.

    <asp:GridView id="GridView_programs"  runat="server"  DataSourceId="ds_lists" >

    15 февраля 2013 г. 6:56
  • Это как раз тот случай про который я говорил, данные не идут на клиент. Поэтому их нельзя получить обратно. Поэтому попробуйте задать CSS свойство  visibility у генерируемого Html контрола.
    15 февраля 2013 г. 7:03
    Модератор
  • Я задавал такое свойство - но оно действует только на содержимое ячейки - сама-то колонка видна (ее границы).
    15 февраля 2013 г. 20:07
  • Если нужно и саму колонку скрыть, то тогда надо данное свойство применить и к самим ячейкам таблицы. Но есть вариант получше: если вы никогда не будете показывать данный столбец, а только надо скрывать и получать их значения, то лучше будет скрыть эти элементы в другом столбце таблицы, содержимое которой будет видно.
    16 февраля 2013 г. 5:52
    Модератор
  • Второй способ очень интересен - я сам так делал в WinForms. Но разве это возможно в ASP.NET?

    Если можно, то дайте пример кода (одна видная колонка, а за ней - скрытая).

    16 февраля 2013 г. 7:13
  • Можно. Просто я предлагаю не скрыть столбец, а скрыть те элементы в том столбце, который показывается.  Если не понятно объяснил постараюссь привести пример.
    16 февраля 2013 г. 10:22
    Модератор
  • Понятно, что данные надо скрыть, но не очень понятно, как это сделать технически. Приведите, пож., пример.
    16 февраля 2013 г. 12:33
  • Yatajga Как там насчет примера?

    18 февраля 2013 г. 11:26
  • Привет

    Попробуйте еще одно решение с помощью CSS, как предлагается здесь - вроде должно решить вашу проблему:

    <style>
    .hidden {display:none;}
    </style>
    ...
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="Id" ItemStyle-CssClass="hidden"
                HeaderStyle-CssClass="hidden" />
            <asp:BoundField DataField="Title" />
        </Columns>
    </asp:GridView>


    Для связи [mail]

    • Помечено в качестве ответа YatajgaEditor 20 февраля 2013 г. 19:18
    19 февраля 2013 г. 7:05
    Модератор
  • Спасибо, приблизительно так я и сделал в конечном счете, правда потерял на этом много времени-:(
    20 февраля 2013 г. 7:19