ASP.NET Показать / Скрыть разделы в строке Datagrid - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть сетка данных, где в каждой строке есть информация о сотрудниках в компании. Я хотел бы разрешить каждой строке возможность показать / скрыть дополнительную информацию. Моей первой идеей было использование CollapsiblePanelExtender из инструментария AJAX, и каждая строка должна выглядеть следующим образом:

<ajaxtoolkit:collapsiblepanelextender
     TargetControlID="panel2">
     ExpandControlID="LinkButton1"
     CollapseControlID="LinkButton1">
</ajaxtoolkit:collapsiblepanelextender>

<asp:panel>
    FirstName | LastName | Phone | Email
    <LinkButton1>  <- this hides/show extra info in panel2
</asp:panel>

<asp:panel2>
     <textbox ="FirstName">
     <textbox ="LastName">
     <textbox ="EmailName">
     ...
     ...lots of textboxes where information is assigned from the database.
</asp:panel2>

Это работает очень хорошо, но это может быть вычислительно дорого. Панель дополнительной информации имеет множество текстовых полей / меток, каждый из которых получает свои значения из базы данных. Каждый раз, когда страница загружает все данные, полученные из базы данных в начале, некоторые из них скрыты.

Есть ли лучший способ достичь моей цели? Или есть способ загрузить дополнительную информацию о сотруднике только при нажатии кнопки Показать / Скрыть?

Заранее спасибо!

1 Ответ

1 голос
/ 09 апреля 2010

Я сделал что-то подобное, но с ModalPopupExtender. У меня была панель с текстовыми полями и метками, которые извлекали информацию только тогда, когда пользователь нажимал на кнопку с изображением. В этом примере кнопка изображения находилась в GridViewRow, а ключ для извлечения данных находился в свойствах DataKeys строки.

GridViewRow row = ((GridViewRow)((ImageButton)sender).NamingContainer);
//NamingContainer return the container that the control sits in
DataKey key = ((GridView)row.NamingContainer).DataKeys[row.RowIndex];

//Retrieve data with a server method. It can be with wathever you want, I use an ArrayList
ArrayList AL=Domain.GetCustomerData(key[0].ToString());

//Fill controls with data, 
LblDate.Text = AL[0].ToString();
dLectHidro.Value = AL[1].ToString();
idLectHL.Value = AL[2].ToString();
LblEstacion.Text = HttpUtility.HtmlDecode(AL[3].ToString());
TxtLluvia.Text = HttpUtility.HtmlDecode(AL[4].ToString());
TxtLluvia1.Text = HttpUtility.HtmlDecode(AL[5].ToString());

//Show the popup
this.ModalPopupModif.Show();

Надеюсь, это поможет. Клаудия

...