Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Копирование стилей с доного контрола на другой
|
|||
|---|---|---|---|
|
#18+
Решил состыковать 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 А куда же делись стили выставленные в дизайне??.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 19:35 |
|
||
|
Копирование стилей с доного контрола на другой
|
|||
|---|---|---|---|
|
#18+
Подниму вопрос еще раз. Как получить значение стилей GridView после DataBind. У меня почему-то после DataBind стили определенные в дизайне<asp:BoundField ItemStyle-CssClass="hTD" DataField="City" HeaderText="Город" /> пустые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 08:57 |
|
||
|
Копирование стилей с доного контрола на другой
|
|||
|---|---|---|---|
|
#18+
Попробую поднять вопрос еще раз. Требуется получить таблицу вида ----+----+------------+----------- | | | |----+------------+----------- | ----+----+------------+----------- | | | |----+------------+----------- | ----+----------------------------- Самый простой способ сделать это при помощи Repeater. Но хочется сделать при помощи GridView. Подскажите пож. возможные способы. Способом описанным в первом посте все получается на ура, но... теряются стили настроенные в дизайне после приведения типов т.е. GridView2 есть стили после Ctype(GridView2.Control(0), Table) Как правильно добавить объект в в ячейку таблицы GridView т.к. e.rows.Cells(0).Control.Add(GridView2) сообщает, что нельзя модифицироровать объект в момент DataBound, PreRender... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2006, 18:01 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=18&tid=1389632]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 444ms |

| 0 / 0 |
