После некоторых поисков я выяснила, что пропадают значения не у одного конкретного TextBox, а у всех Textbox-ов, лежащих в EditTemplate! На стадии Item_Databound значения все на месте, а после изменения ОДНОГО из TextBox-ов пропадают значения у ВСЕХ! А если сначала поменять любые другие контролы (не TextBox), то Textbox уже редактируется как положено и сколько угодно раз!!!
Вот полный вид EditItemTemplate
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 старыми значениями (хотя, возможно, это и неправильно), а как выкрутиться в данном случае?