powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Копирование стилей с доного контрола на другой
3 сообщений из 3, страница 1 из 1
Копирование стилей с доного контрола на другой
    #33979161
Bergman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил состыковать 2 таблицы master и detail, что-бы получилось:
-----------------
страна  | город 
--------+--------
        | Москва
Россия  |--------
        | Питер
--------+-------- 
        | Киев  
Украина |--------
        | Донецк
--------+--------

Идея объединения проста:
на форме 2 GridView
1 Master - Страны
2 Details  - Города
На RowDataBound Master вешаем процедуру по считыванию структктуры Details GridView - хочется из Details GridView получить значения,  стили, контролы.
Загвоздка в том что не погу получить стили ячеек Details GridView
Т.е.  на странице:<asp:BoundField ItemStyle-CssClass="hTD" DataField="City" HeaderText="Город" />


 
Код по получения стиля  tc.CssClass = detailsGV.Rows(j).Cells(k).CssClass
Код по считыванию и созданию ячеек Details GridViewProtected Sub countryGV_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles countryGV.RowDataBound
If e.Row.RowType = DataControlRowType.Header Then
GetDetailsTableHeader(e.Row, CType(sender, GridView), gvCity)
End If

If e.Row.RowType = DataControlRowType.DataRow Then
Dim dRV As Data.DataRowView = CType(e.Row.DataItem, Data.DataRowView)
dsCity.SelectCommand = String.Format("SELECT * FROM [t_City] WHERE ([CityID] ={0})", dRV.Item("CityID").ToString)
gvCity.DataBind()
GetDetailsTable(e.Row, CType(sender, GridView), gvCity)
End If
End Sub

Protected Sub GetDetailsTable(ByRef masterItemRow As GridViewRow, ByRef masterGV As GridView, ByRef detailsGV As GridView)
Dim oTBL As Table = CType(masterGV.Controls(0), Table)
Dim i, j, k, m As Integer
Dim rc As Integer = detailsGV.Rows.Count
Dim cc As Integer = detailsGV.Columns.Count
Dim gvr As GridViewRow
Dim tc As TableCell
' Предпологается, что вставка дочерней таблицы идет в последней ячейке
Dim rowSpanInd As Int16 = masterGV.Columns.Count - 2 ' нумерация с 0; -1 последний
For i = 0 To rowSpanInd
masterItemRow.Cells(i).RowSpan = rc
Next
If rc = 0 Then rc = 1
masterItemRow.Cells.RemoveAt(rowSpanInd + 1)
For j = 0 To rc - 1
If j <> 0 Then gvr = New GridViewRow(masterItemRow.RowIndex + j, 0, DataControlRowType.DataRow, masterItemRow.RowState) Else gvr = masterItemRow
For k = 0 To cc - 1
If detailsGV.Columns.Item(k).Visible = False Then Continue For
tc = New TableCell
If detailsGV.Rows.Count = 0 Then
tc.Text = " "
Else
tc.Text = detailsGV.Rows(j).Cells(k).Text
tc.CssClass = detailsGV.Rows(j).Cells(k).CssClass
Dim keys As IEnumerator = detailsGV.Rows(j).Cells(k).Style.Keys.GetEnumerator()
While keys.MoveNext()
Dim key As [String] = CType(keys.Current, [String])
tc.Attributes.Add(key, detailsGV.Rows(j).Cells(k).Style(key))
End While
For m = 0 To detailsGV.Rows(j).Cells(k).Controls.Count - 1
tc.Controls.Add(detailsGV.Rows(j).Cells(k).Controls(m))
Next
End If
gvr.Cells.Add(tc)
Next
If j <> 0 Then oTBL.Rows.Add(gvr)
Next
End Sub
Проблема в том, что все свойства связанные со стилями в дочерней таблице пустые.
Но если явно в коде указать значения стиля, то все хорошо.
Т.е. If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(0).CssClass = "hTD"
То значения CssClass отлавливаются вtc.CssClass = detailsGV.Rows(j).Cells(k).CssClass

А куда же делись стили выставленные в дизайне??..
...
Рейтинг: 0 / 0
Копирование стилей с доного контрола на другой
    #33979656
Bergman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подниму вопрос еще раз.
Как получить значение стилей GridView после DataBind.
У меня почему-то после DataBind стили определенные в дизайне<asp:BoundField ItemStyle-CssClass="hTD" DataField="City" HeaderText="Город" />
пустые.
...
Рейтинг: 0 / 0
Копирование стилей с доного контрола на другой
    #33985190
Bergman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую поднять вопрос еще раз.
Требуется получить таблицу вида

----+----+------------+-----------
    |    |            |  
    |----+------------+-----------
    |   
----+----+------------+-----------
    |    |            |  
    |----+------------+-----------
    |   
----+-----------------------------

Самый простой способ сделать это при помощи Repeater.
Но хочется сделать при помощи GridView.
Подскажите пож. возможные способы.
Способом описанным в первом посте все получается на ура, но... теряются  стили настроенные в дизайне после приведения типов
т.е. GridView2 есть стили после Ctype(GridView2.Control(0), Table) 

Как правильно добавить объект в в ячейку таблицы GridView
т.к. e.rows.Cells(0).Control.Add(GridView2)  сообщает, что нельзя модифицироровать объект в момент DataBound, PreRender...

 
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Копирование стилей с доного контрола на другой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]