Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с TemplatedField / 19 сообщений из 19, страница 1 из 1
05.02.2014, 08:50
    #38549668
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Здравствуйте.
Раскрашиваю строчки GV в зависимости от значения поля TF

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (((Label)e.Row.FindControl("label8")).Text == "1")
                {
                    e.Row.ForeColor = System.Drawing.Color.Red;
                }
            }
        }



Но после этого, по какой-то причине не получается произвести изменение в строке GV, реакция на Edit следующая:
ErrorОшибка: Sys.WebForms.PageRequestManagerServerErrorException: Ссылка на объект не указывает на экземпляр объекта.

Подскажите в чём дело, и что делать.
Спасибо
...
Рейтинг: 0 / 0
05.02.2014, 11:52
    #38549936
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
поставьте в Вашем коде точку останова и гляньте под дебагом - какая именно ссылка не указывает на экземпляр
...
Рейтинг: 0 / 0
05.02.2014, 12:15
    #38549984
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
ErrorСсылка на объект не указывает на экземпляр объекта.

у меня есть сильное подохрение, што надо указать ссылку на реальный экземпляр объекта. что-то мне подсказывает...
...
Рейтинг: 0 / 0
05.02.2014, 12:34
    #38550031
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
SashaMercury,

... у вас Edit через CommandField реализовано, или еще как?
...
Рейтинг: 0 / 0
06.02.2014, 01:43
    #38551300
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
carrotik,
через CommandField

Я не так много работаю с GV, не знаю как поставить точку останова в коде Edit
...
Рейтинг: 0 / 0
06.02.2014, 01:46
    #38551302
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
&&!u)throw n;},_ensureUniqueIds:function(n){var i,t,f,r,u;if(!n)

Это как-то поможет для идентификации проблемы ?
...
Рейтинг: 0 / 0
06.02.2014, 12:56
    #38551714
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
SashaMercury,

... Бог его знает, где у вас затыка, но я вот проверил на своем простеньком гриде вашу раскраску - у меня работает ... Я пример реальный приведу, вы посмотрите, чем у вас отличается

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
ConnectionString="<%$ ConnectionStrings:TelephoneConnectionString %>"
SelectCommand="SELECT * FROM Users ORDER BY otdel, familyname" 
UpdateCommand="UPDATE Users SET FirstName = @FirstName, 
Patronim = @Patronim, 
OfficePhone = @OfficePhone, 
CityOfficePhone = @CityOfficePhone, 
CellPhone = @CellPhone,
Email = @Email, AutoDial = @AutoDial, 
Otdel = @Otdel, Hostip = @Hostip
WHERE Serial = @Serial" DeleteCommand="DELETE FROM Users WHERE Serial = @Serial">
            <UpdateParameters>
                <asp:Parameter Type="int32" Name="Serial" />
                <asp:Parameter Type="string" Name="FamilyName" />
                <asp:Parameter Type="string" Name="FirstName" />
                <asp:Parameter Type="string" Name="Patronim" />
                <asp:Parameter Type="string" Name="OfficePhone" />
                <asp:Parameter Type="string" Name="CityOfficePhone" />
                <asp:Parameter Type="string" Name="CellPhone" />
                <asp:Parameter Type="string" Name="Email" />
                <asp:Parameter Type="string" Name="AutoDial" />
                <asp:Parameter Type="int32" Name="Otdel" />
                <asp:Parameter Type="string" Name="Hostip" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <asp:GridView ID="GridView1" runat="server" 
AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" DataKeyNames="serial"            
Width="90%" DataSourceID="SqlDataSource1" 
CellPadding="2" ForeColor="#333333"            
GridLines="Both" AllowPaging="True" PageSize="10" ShowFooter="True">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:TemplateField HeaderText="Удалить">
                    <ItemTemplate>
                        <asp:Button ID="deleteButton" runat="server" CommandName="Delete" Text="Удалить"
                            OnClientClick="return confirm('Удалить эту позицию?');" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Otdel" HeaderText="Отдел" SortExpression="Otdel" />
                <asp:TemplateField HeaderText="Ф.И.О">
                    <ItemTemplate>
                        <asp:Label ID="Label1" Text='<%# Eval("FamilyName") %>' runat="server"></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                        <asp:Button ID="AddButton" OnClick="InsertNew" runat="server" Text="Добавить" />
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="OfficePhone" 
HeaderText="Телефон внутренний" SortExpression="OfficePhone" />
                <asp:BoundField DataField="CityOfficePhone" 
HeaderText="Телефон городской" SortExpression="CityOfficePhone" />
                <asp:BoundField DataField="CellPhone" 
HeaderText="Телефон мобильный" SortExpression="CellPhone" />
                <asp:BoundField DataField="Email" 
HeaderText="Email" SortExpression="Email" />
                <asp:BoundField DataField="AutoDial" 
HeaderText="Автонабор" SortExpression="AutoDial" />
                <asp:BoundField DataField="Hostip" 
HeaderText="IP Address" SortExpression="Hostip" />
                

            </Columns>
            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
            <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
            <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>



... а в кодебехайнд такой же RowDataBound - у меня VB.NET, но принцип тот же ... Все работает

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GridView1.RowDataBound

        If e.Row.RowType = DataControlRowType.DataRow Then

            If CType(e.Row.FindControl("Label1"), Label).Text.Contains("Анна") Then
                e.Row.ForeColor = Drawing.Color.Red
                e.Row.BackColor = Drawing.Color.White
            End If

        End If
    End Sub



.... вот если использовать RowCreated, тогда да, ексепшн ловит на этом методе при переходе в режим Edit ...
...
Рейтинг: 0 / 0
06.02.2014, 13:00
    #38551720
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
SashaMercurycarrotik,
через CommandField

Я не так много работаю с GV, не знаю как поставить точку останова в коде Editя сказал поставить точку останова в Вашем коде а не в каком-то коде Edit.
Вы же видите по CallStack где именно возникает исключение? Это Вашем коде или нет?
...
Рейтинг: 0 / 0
06.02.2014, 13:18
    #38551758
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
ПаганельSashaMercurycarrotik,
через CommandField

Я не так много работаю с GV, не знаю как поставить точку останова в коде Editя сказал поставить точку останова в Вашем коде а не в каком-то коде Edit.
Вы же видите по CallStack где именно возникает исключение? Это Вашем коде или нет?

... да, скорее всего, именно в RowDataBound оно выскакивает как раз на строке, где FindControl, который в режиме Edit не успевает отрендериться ... Но это только догадки ...
...
Рейтинг: 0 / 0
07.02.2014, 01:51
    #38552714
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Unhandled exception at line 1, column 126350 in http://localhost:52391/bundles/MsAjaxJs?v=J4joXQqg80Lks57qbGfUAfRLic3bXKGafmR6wE4CFtc1

0x800a139e - Ошибка выполнения JavaScript: Sys.WebForms.PageRequestManagerServerErrorException: Ссылка на объект не указывает на экземпляр объекта.
...
Рейтинг: 0 / 0
07.02.2014, 01:54
    #38552715
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
А,да. Ошибка на FindControl !
...
Рейтинг: 0 / 0
07.02.2014, 02:20
    #38552724
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
А почему, непонятно. точнее что делать непонятно
...
Рейтинг: 0 / 0
07.02.2014, 09:43
    #38552826
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
сделать условие на данные, а не на текст Label
...
Рейтинг: 0 / 0
07.02.2014, 10:01
    #38552839
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Подскажите пожалуйста как это будет выглядеть, например
...
Рейтинг: 0 / 0
07.02.2014, 10:07
    #38552848
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
например DataBinder.Eval(e.Row.DataItem, "TF")
...
Рейтинг: 0 / 0
07.02.2014, 10:20
    #38552872
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Приведите пожалуйста весь кусок кода
...
Рейтинг: 0 / 0
07.02.2014, 10:23
    #38552877
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if ((DataBinder.Eval(e.Row.DataItem, "TF") as string) == "1")
                {
                    e.Row.ForeColor = System.Drawing.Color.Red;
                }
            }
        }

проверяйте
...
Рейтинг: 0 / 0
10.02.2014, 02:12
    #38555186
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
Заработало ! Спасибо C:

А почему стало работать ?
...
Рейтинг: 0 / 0
10.02.2014, 10:30
    #38555342
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с TemplatedField
SashaMercuryА почему стало работать ?чтобы это выяснить, Вам придется проверить то, о чем выше писал carrotik
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с TemplatedField / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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