Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Нестандартный DataGrid / 8 сообщений из 8, страница 1 из 1
07.12.2004, 16:40
    #32817065
Е л е н а
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
Задача в следующем: есть список, который надо вывести в таблицу, причем, стили строк должны меняться в зависимости от значения некоторого поля в строке.
Это решается обработкой ItemDataBound для DataGrid.
Но возникла необходимость, наравне со всем этим же еще в некоторых случаях
дорисовывать нечто вместо строк с определенным значением поля.
Причем,это "нечто" не картинка, а оформление, например тег <HR>.

Если переходить на Repeater, то непонятно, как менять стили в разных его строках, как это делается в DataGrid. Так как, если Repeater засаживать в обычную таблицу (<TABLE>), то в событии ItemDataBound для Repeater непонятно как к самим ячейкам той таблицы добираться.

То есть, если использовать DataGrid, то как влезть в текст строки??
Если использовать Repeater, то как оформлять отдельные строки таблицы в зависимости от значений поля?

Спасибо.
...
Рейтинг: 0 / 0
07.12.2004, 17:43
    #32817261
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
Е л е н аЕсли переходить на Repeater, то непонятно, как менять стили в разных его строках, как это делается в DataGrid. Так как, если Repeater засаживать в обычную таблицу (<TABLE>), то в событии ItemDataBound для Repeater непонятно как к самим ячейкам той таблицы добираться.что является DataSource для репитера?
если DataReader - тогда примерно так: (e.Item.DataItem as System.Data.Common.DbDataRecord)["Id"]
если DataTable - тогда (e.Item.DataItem as DataRowView).Row.ItemArray[0]
примерно так...
...
Рейтинг: 0 / 0
07.12.2004, 17:58
    #32817307
Е л е н а
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
profil
если DataTable - тогда (e.Item.DataItem as DataRowView).Row.ItemArray[0]
примерно так...

И этот элемент (e.Item.DataItem as DataRowView).Row.ItemArray[0] какого типа получается?
...
Рейтинг: 0 / 0
07.12.2004, 18:14
    #32817342
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
object
...
Рейтинг: 0 / 0
07.12.2004, 18:29
    #32817361
Е л е н а
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
Я неправильно спросила, извинте.
Имела ввиду другое, какой это объект? Ведь repeater не рисует сам таблицу, так что это за строка будет? К чему она относится и какие у нее свойства есть?
...
Рейтинг: 0 / 0
07.12.2004, 18:58
    #32817402
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
DataSource у Вашего репитера - таблица;
(e.Item.DataItem as DataRowView).Row.ItemArray[0] - значение поля[0] в текущей строке
...
Рейтинг: 0 / 0
08.12.2004, 09:25
    #32817804
profil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
так будет лучше:
Код: plaintext
object obj = (e.Item.DataItem as DataRowView).Row["Id"];
...
Рейтинг: 0 / 0
08.12.2004, 12:28
    #32818404
Е л е н а
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартный DataGrid
Это значение поля, а мне-то нужно было покрасить ячейку таблицы!!!


Задача решилась следующим образом: нужную ячейку в таблице оформляю, как серверную.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<TABLE WIDTH= 150  BORDER= 0  CELLPADDING= 0  CELLSPACING= 0 >
  <asp:Repeater runat="Server" ID="MenuList" OnItemDataBound="MenuList_ItemDataBound">
  <ItemTemplate>
  <TR >
    <TD  WIDTH="5%"\></TD>
      <asp:TableCell ID="Td1" runat="Server">	
         <%# Container.DataItem( "Name" ) %>
      </asp:TableCell>
    <TD  WIDTH="5%"\></TD>
  </TR>
.......

А в обработчике MenuList_ItemDataBound ищу эту ячейку и работаю с ней:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub MenuList_ItemDataBound(Sender as Object, Events As System.Web.UI.WebControls.RepeaterItemEventArgs)
 IF (Events.Item.ItemType = ListItemType.Item) OR (Events.Item.ItemType = ListItemType.AlternatingItem) Then 
 
   Dim ParentID as Integer
   ParentID = Events.Item.DataItem("ParentID")
   Dim TD As TableCell = Events.Item.FindControl( "Td1" )


   IF ParentID =  0  Then 
     TD.CSSClass = "MT_Title"
   Else
     TD.CSSClass = "MT_BGColor"
   End IF
 
 End IF
End Sub

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


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