powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Теряется значение TextBox при вызове TextChanged
6 сообщений из 6, страница 1 из 1
Теряется значение TextBox при вызове TextChanged
    #38124691
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма с UpdatePanel, внутри которой лежит ListView. В InsertTemplate и EditTemplate лежит текстовое поле

Код: c#
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.
<asp:UpdatePanel ID="MyUPCDListPrice" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="ImgBSave" />
        <asp:AsyncPostBackTrigger ControlID="ButSave" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="ImgBSaveLV" />
        <asp:AsyncPostBackTrigger ControlID="ImgBEdit" />
        <asp:AsyncPostBackTrigger ControlID="ImgBDel" />
        <asp:AsyncPostBackTrigger ControlID="LVDogPreisk" />
    </Triggers>
    <ContentTemplate>
                    <asp:ListView ID="LVDogPreisk" runat="server" DataSourceID="edsDogovorCard" 
                        OnSelectedIndexChanging="LVDogPreisk_SelectedIndexChanging" 
                        OnItemDataBound="LVDogPreisk_ItemDataBound" 
                        OnItemCreated="LVDogPreisk_ItemCreated"
                        OnItemUpdating="LVDogPreisk_ItemUpdating" 
                        OnItemInserting="LVDogPreisk_ItemInserting"
                        OnItemCanceling="LVDogPreisk_ItemCanceling" 
                        OnDataBound="LVDogPreisk_DataBound" 
                        DataKeyNames="SysKey" EnablePersistedSelection="True">
                        <InsertItemTemplate>
                                    <asp:TextBox ID="tbxKolEdIzm" runat="server" Text='<%# Bind("KolEdIzm") %>' Width="30px" 
                                    SkinID="MyTextBoxLV" OnTextChanged="tbxKolEdIzm_TextChanged" AutoPostBack="True"></asp:TextBox>
                        </InsertItemTemplate>
                        <EditItemTemplate>
                                    <asp:TextBox ID="tbxKolEdIzm" runat="server" Text='<%# Bind("KolEdIzm") %>' Width="30px" 
                                    SkinID="MyTextBoxLV" OnTextChanged="tbxKolEdIzm_TextChanged"  AutoPostBack="True"></asp:TextBox>
                        </EditItemTemplate>
                    </asp:ListView>
    </ContentTemplate>
</asp:UpdatePanel>



Вот сокращенный вызов события
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        protected void tbxKolEdIzm_TextChanged(Object sender, EventArgs e)
        {
            TextBox mytbxKol = (TextBox)sender;

            if (mytbxKol != null)
            {
              идет расчет данных
             }
      }



Когда я добавляю запись в ListView - всё отрабатывает как часы. А вот кода я редактирую запись - то после изменения значения срабатывает событие TextChanged, но TextBox оказывается пустым! Вот я и не могу понять, почему исчезает значение у TextBox...
...
Рейтинг: 0 / 0
Теряется значение TextBox при вызове TextChanged
    #38151696
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После некоторых поисков я выяснила, что пропадают значения не у одного конкретного TextBox, а у всех Textbox-ов, лежащих в EditTemplate! На стадии Item_Databound значения все на месте, а после изменения ОДНОГО из TextBox-ов пропадают значения у ВСЕХ! А если сначала поменять любые другие контролы (не TextBox), то Textbox уже редактируется как положено и сколько угодно раз!!!

Вот полный вид EditItemTemplate
Код: c#
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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
<EditItemTemplate>
    <tr style="margin: 0px; padding: 0px; vertical-align: middle;">
        <td style="margin: 0px; border: 1px ridge #006699; background-color: #FFFFFF">
            <asp:ImageButton ID="ImgBUndo" runat="server" ImageUrl="~/Image/undo2.png"  CommandName="Cancel"  AlternateText="Отменить"/>
            <asp:TextBox ID="tbxSysKey" runat="server" Text='<%# Bind("SysKey") %>' Visible="False" Width="20px" SkinID="MyTextBoxLV"></asp:TextBox>
            <asp:TextBox ID="tbxSysDogovor" runat="server" Text='<%# Bind("SysDogovor") %>' Visible="False" Width="20px" SkinID="MyTextBoxLV"></asp:TextBox>

            <asp:ModalPopupExtender runat="server" ID="MyModalPopupVse"
                TargetControlID="ImgBUndo"
                PopupControlID="MyModalPupupPanelVse" 
                backgroundcssclass="ModalPopupBG"
                OkControlID="ButOK">
            </asp:ModalPopupExtender>

            <asp:ConfirmButtonExtender ID="ImgBUndo_ConfirmButtonExtender" runat="server" 
                TargetControlID="ImgBUndo" Enabled="True" DisplayModalPopupID="MyModalPopupVse">
            </asp:ConfirmButtonExtender>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:DropDownList ID="ddlPreisk1" runat="server" SkinID="MyDDL" 
                Width="200px"/>
            <asp:CascadingDropDown runat="server" ID="cddPreisk1" 
                    TargetControlID="ddlPreisk1" Category="Preiskurant" 
                    PromptText="Выберите прейскурант" SelectedValue='<%# Bind("PreiskurID") %>'
                    ServiceMethod="GetPreiskur" 
                    ServicePath="~/MyPreiskurant.asmx" 
                    >
            </asp:CascadingDropDown>
            <asp:RequiredFieldValidator ID="rvfcddPreisk1" runat="server" 
                ErrorMessage="Поле <<Прейскурант>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="ddlPreisk1" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:DropDownList ID="ddlCalcul1" runat="server" SkinID="MyDDL"
                Width="200px" OnSelectedIndexChanged="ddlCalcul1_SelectedIndexChanged" AutoPostBack="True" />
            <asp:CascadingDropDown runat="server" ID="cddCalcul1" 
                    TargetControlID="ddlCalcul1" Category="Calcul" 
                    PromptText="Выберите калькуляцию" SelectedValue='<%# Bind("CalculID") %>'
                    ParentControlID="ddlPreisk1"  
                    ServiceMethod="GetCalculate" ServicePath="~/MyPreiskurant.asmx" 
                    >
            </asp:CascadingDropDown>
            <asp:RequiredFieldValidator ID="rvfcddCalcul1" runat="server" 
                ErrorMessage="Поле <<Калькуляция>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="ddlCalcul1" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:DropDownList ID="ddlCalcul2" runat="server" SkinID="MyDDL"
                Width="150px" OnSelectedIndexChanged="ddlCalcul2_SelectedIndexChanged" AutoPostBack="True" />
            <asp:TextBox ID="tbxNameSubCalc" runat="server" Text='<%# Bind("NameSubCalc") %>' Width="50px" Visible="false"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rvfddlCalcul2" runat="server" 
                ErrorMessage="Поле <<Наименование работ>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="ddlCalcul2" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("DogObject") %>' Width="70px" TextMode="MultiLine"></asp:TextBox>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:DropDownList ID="ddlOU" runat="server" SkinID="MyDDL"
                AutoPostBack="True"
                DataSourceID="edsSpravOsobUsl" SelectedValue='<%# Bind("OsobUsl") %>' 
                OnSelectedIndexChanged="ddlOU_SelectedIndexChanged" 
                DataValueField="SysKey" DataTextField="NameShort" AppendDataBoundItems="True">
                <asp:ListItem Text="нет" Value="0" />
            </asp:DropDownList>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:Label ID="LblEdIzm" runat="server" Text="" Width="50px" ClientIDMode="Static" SkinID="MyLabelLV" />
            <asp:TextBox ID="tbxEdIzm" runat="server" Text='<%# Bind("EdIzm") %>' Width="50px" Visible="false"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rvftbxEdIzm" runat="server" 
                ErrorMessage="В калькуляции отсутствует расшифровка!!! Обратитесь к экономистам!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="tbxEdIzm" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:TextBox ID="tbxKolEdIzm" runat="server" Text='<%# Bind("KolEdIzm") %>' 
                Width="30px" SkinID="MyTextBoxLV" OnTextChanged="tbxKolEdIzm_TextChanged" 
                AutoPostBack="True" ViewStateMode="Enabled"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rvftbxKolEdIzm" runat="server" 
                ErrorMessage="Поле <<Кол-во>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="tbxKolEdIzm" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:TextBox ID="tbxSumCalc" runat="server" Text='<%# Bind("SumCalc") %>' Width="70px" 
            SkinID="MyTextBoxLV"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rvftbxSumCalc" runat="server" 
                ErrorMessage="Поле <<Сумма без НДС>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="tbxSumCalc" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
            <asp:RangeValidator ID="rvtbxSumCalc" runat="server" ValidationGroup="MyMinValid1" 
                ControlToValidate="tbxSumCalc" MinimumValue="1" MaximumValue="2147483500" Type="Integer" 
                ErrorMessage="Поле <<Сумма без НДС>> должна быть больше 0!!! Проверьте расшифровку калькуляции!!!"
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large"
                >*</asp:RangeValidator>
        </td>
        <td style="margin: 0px; border: 1px solid #006699; background-color: #FFFFFF; vertical-align: middle;">
            <asp:TextBox ID="tbxSumItog" runat="server" Text='<%# Bind("SumItog") %>' Width="70px" SkinID="MyTextBoxLV"></asp:TextBox>
            <asp:RequiredFieldValidator ID="rvftbxSumItog" runat="server" 
                ErrorMessage="Поле <<Сумма c НДС>> не должно быть пустым!!!"  
                ValidationGroup="MyMinValid1" ControlToValidate="tbxSumItog" 
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large">*</asp:RequiredFieldValidator>
            <asp:RangeValidator ID="rvtbxSumItog" runat="server" ValidationGroup="MyMinValid1" 
                ControlToValidate="tbxSumItog" MinimumValue="1" MaximumValue="2147483500" Type="Integer" 
                ErrorMessage="Поле <<Сумма c НДС>> должна быть больше 0!!! Проверьте расшифровку калькуляции!!!"
                ForeColor="#FF0066" Font-Names="Times New Roman" Font-Size="Large"
                >*</asp:RangeValidator>

            <asp:TextBox ID="tbKolNDS" runat="server" Text='<%# Bind("KolNDS") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumNDS" runat="server" Text='<%# Bind("SumNDS") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbKolEdIzm1" runat="server" Text='<%# Bind("KolEdIzm1") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbKolEdIzm2" runat="server" Text='<%# Bind("KolEdIzm2") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbPriceNoNDSKol1" runat="server" Text='<%# Bind("PriceNoNDSKol1") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbPriceNoNDSKol2" runat="server" Text='<%# Bind("PriceNoNDSKol2") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumNoNDSKol1" runat="server" Text='<%# Bind("SumNoNDSKol1") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumNoNDSKol2" runat="server" Text='<%# Bind("SumNoNDSKol2") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumNDSKol1" runat="server" Text='<%# Bind("SumNDSKol1") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumNDSKol2" runat="server" Text='<%# Bind("SumNDSKol2") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumItogKol1" runat="server" Text='<%# Bind("SumItogKol1") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbSumItogKol2" runat="server" Text='<%# Bind("SumItogKol2") %>' Width="20px" Visible="false"></asp:TextBox>
            <asp:TextBox ID="tbPriceNoNDS" runat="server" Text='<%# Bind("PriceNoNDS") %>' Width="20px" Visible="false"></asp:TextBox>
        </td>
    </tr>
                                            
</EditItemTemplate>



Аналогичная была ситуация, если сразу после перехода записи в режим редактирования я пыталась её сохранить ничего не меняя.
Здесь я выкрутилась, переинициализировов пустые контролы в событии ItemUpdating старыми значениями (хотя, возможно, это и неправильно), а как выкрутиться в данном случае?
...
Рейтинг: 0 / 0
Теряется значение TextBox при вызове TextChanged
    #38151930
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афигеть!
...
Рейтинг: 0 / 0
Теряется значение TextBox при вызове TextChanged
    #38152012
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать рабочую демку на парочке текстбоксов и выложить сюда. Гадать на кофе не получится.
...
Рейтинг: 0 / 0
Теряется значение TextBox при вызове TextChanged
    #38152304
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,

Просто у меня большие подозрение на CascadingDropDown, потому что все остальные ListView без него работают без нареканий.
Рабочую демку я сделаю...
...
Рейтинг: 0 / 0
Теряется значение TextBox при вызове TextChanged
    #38157528
VeroNa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, я разобралась в этом аномальном поведении...
С какого-то перепугу срабатывало событие на этом контроле
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
<asp:DropDownList ID="ddlCalcul1" runat="server" SkinID="MyDDL"
                Width="200px" OnSelectedIndexChanged="ddlCalcul1_SelectedIndexChanged" AutoPostBack="True" />
<asp:CascadingDropDown runat="server" ID="cddCalcul1" 
                    TargetControlID="ddlCalcul1" Category="Calcul" 
                    PromptText="Выберите калькуляцию" SelectedValue='<%# Bind("CalculID") %>'
                    ParentControlID="ddlPreisk1"  
                    ServiceMethod="GetCalculate" ServicePath="~/MyPreiskurant.asmx" 
                    >
            </asp:CascadingDropDown>


(хотя и не должно было!), а оно как раз и чистило всё напрочь... В общем, я выкинула CascadingDropDown и сделала тоже самое на DropDownList.
Теперь всё работает отлично.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Теряется значение TextBox при вызове TextChanged
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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