среда, 1 сентября 2010 г.

TextBoxWatermarkExtender и UpdatePanel

TextBoxWatermarkExtender - замечательный контрольчик из AjaxControlToolkit  который позоляет вешать на текстовые поле предварительные сообщения, информирующие пользователя о необходимых действиях.

Например.
...
<asp:TextBox   ID="txtLogin" runat="server"></asp:TextBox>
<cc1:TextBoxWatermarkExtender ID="TBWERFALogNumber" runat="server"

TargetControlID="txtLogin"
WatermarkText="Type Login Here" />
....

Теперь при рендере у нас будет текстовое поле внутри которго будет сообщение "Type Login Here". При наведении фокуса на это поле, сообщение пропадает и у нас есть возможность ввести все что нам надо. Если ничего не ввели - то это сообщение появляется опять  при потере фокуса текстовым полем.

После постбека спокойно обращаемся к TextBox не задумываясь о TextBoxWatermarkExtender. Если ничего не было введено, значение TextBox.Text будет пустым. TextBoxWatermarkExtender не окажет никакого влияния на TextBox.

Ситуация координально меняетеся если мы обернем наш  контент в UpdatePanel.
....
<asp:UpdatePanel ID="upSH" runat="server">
<ContentTemplate>
...
<asp:TextBox ID="txtLogin" runat="server"></asp:TextBox>

<cc1:TextBoxWatermarkExtender ID="TBWELogin" runat="server"
TargetControlID="txtLogin"
WatermarkText="Type Login Here" />
...
</ContentTemplate>

</asp:UpdatePanel>
...


Теперь при постбеке, TextBox.Text  всегда будет содержать значение того,  что было написано в нем. Инными словами, если мы ничего не ввели в TextBox, значение TextBox.Text будет равно "Type Login Here" (так как этозначение было установленно туда контролом TextBoxWatermarkExtender ).

Теперь для того чтобы получить корректное значение введенных данных для TextBox , на постбеке необходимо сравнивать значение присутствующее в TextBox со значением  установленным для TextBoxWatermarkExtender.

...
Dim result as String = String.Empty
If txtLogin.Text.Trim <> String.Empty Then
    If Not txtBudgetCost.Text.Trim.Equals(TBWELogin.WatermarkText.Trim) Then
       result = txtLogin.Text.Trim
    End If
End If
....

После этого переменная result будет содержать корректные данные.

Комментариев нет:

Отправить комментарий