как сделать HyperLinkField без ссылки?
От: Аноним  
Дата: 01.12.10 07:18
Оценка:
Добрый день всем!

Вопрос такой. Есть GridView и в нем колонка типа HyperLinkField

<asp:HyperLinkField HeaderText="NAME" DataTextField="NAME" DataTextFormatString="{0}" 
                DataNavigateUrlFields="YearId,QuarterId,MonthId,PeriodId,WeekId,RequestId,CenterId,DivisionId,StationId" 
                DataNavigateUrlFormatString="~\request6.aspx?YearId={0}&amp;QuarterId={1}&amp;MonthId={2}&amp;PeriodId={3}&amp;WeekId={4}&amp;RequestId={5} &amp;CenterId={6}&amp;DivisionId={7}&amp;StationId={8}" >
                <ControlStyle Width="128px" />
                <ItemStyle  HorizontalAlign="Left" />
            </asp:HyperLinkField>


Грид заполняется из таблицы БД. Ячейки в Гриде не генерируются автоматически.

Необходимо сделать так чтобы HyperLinkField при каком то условии выводил то ссылку то просто текст — без навигации (т.е. выводил бы информацию как обычный TextField).

Пытаюсь в коде сделать вот так вот для вывода обычным текстом:

GridView2.DataSource = dataTable1;
            GridView2.DataBind();
            GridView2.Visible = true;

if (nCenter != -1 && nDivision != -1 && nStation == -1)
{
for (int i = 0; i < GridView2.Rows.Count; i++)
{
((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFields = null;
((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFormatString = "";
}
}


Получается, что поле Name выводится все равно ссылкой, но надо бы вывести с обычным текстом...
Хотя при повторном выполнении уже выводится текст...

Посоветуйте как лучше реализовать вот такую вот возможность?
Re: как сделать HyperLinkField без ссылки?
От: Аноним  
Дата: 01.12.10 07:38
Оценка:
пока нарыл вот такой вариант:



GridView2.DataSource = dataTable1;
            GridView2.DataBind();

            if (nCenter == -1 && nDivision == -1 && nStation == -1)
            {
            }
            else if (nCenter != -1 && nDivision == -1 && nStation == -1)
            {
            }
            else if (nCenter != -1 && nDivision != -1 && nStation == -1)
            {
                for (int i = 0; i < GridView2.Rows.Count; i++)
                {
                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFields = null;
                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFormatString = "";
                }
                GridView2.DataBind();
            }

            GridView2.Visible = true;



Только не знаю корректно ли двараза вызывать DataBind...
Re[2]: как сделать HyperLinkField без ссылки?
От: cadet354 Россия
Дата: 01.12.10 08:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>пока нарыл вот такой вариант:




А>
А>GridView2.DataSource = dataTable1;
А>            GridView2.DataBind();

А>            if (nCenter == -1 && nDivision == -1 && nStation == -1)
А>            {
А>            }
А>            else if (nCenter != -1 && nDivision == -1 && nStation == -1)
А>            {
А>            }
А>            else if (nCenter != -1 && nDivision != -1 && nStation == -1)
А>            {
А>                for (int i = 0; i < GridView2.Rows.Count; i++)
А>                {
А>                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFields = null;
А>                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFormatString = "";
А>                }
А>                GridView2.DataBind();
А>            }

А>            GridView2.Visible = true;
А>



А>Только не знаю корректно ли двараза вызывать DataBind...

подпишитесь на событие OnDataBinding/ItemCreated (точное название уже забыл но направление такое ), там будут доступны строки и cell, и там убирайте ссылки.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re[3]: как сделать HyperLinkField без ссылки?
От: Аноним  
Дата: 01.12.10 08:35
Оценка:
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, <Аноним>, Вы писали:


А>>пока нарыл вот такой вариант:




А>>
А>>GridView2.DataSource = dataTable1;
А>>            GridView2.DataBind();

А>>            if (nCenter == -1 && nDivision == -1 && nStation == -1)
А>>            {
А>>            }
А>>            else if (nCenter != -1 && nDivision == -1 && nStation == -1)
А>>            {
А>>            }
А>>            else if (nCenter != -1 && nDivision != -1 && nStation == -1)
А>>            {
А>>                for (int i = 0; i < GridView2.Rows.Count; i++)
А>>                {
А>>                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFields = null;
А>>                    ((HyperLinkField)((DataControlFieldCell)GridView2.Rows[i].Cells[0]).ContainingField).DataNavigateUrlFormatString = "";
А>>                }
А>>                GridView2.DataBind();
А>>            }

А>>            GridView2.Visible = true;
А>>



А>>Только не знаю корректно ли двараза вызывать DataBind...

C>подпишитесь на событие OnDataBinding/ItemCreated (точное название уже забыл но направление такое ), там будут доступны строки и cell, и там убирайте ссылки.

Спасибо, кстати почему то совсем выпустил из головы такой вариант, хотя недавно читал что футер мона обновлять таким же образом...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.