Отобразить пароль char * в столбце пароля в виде сетки в режиме редактирования
У меня есть веб-форма gridview. В этой колонке есть пароль. Я хочу позволить пользователям сменить пароль. Есть несколько вопросов.
В шаблоне редактирования я упомянул столбец пароля TextMode как пароль. Так что, когда я нажимаю на кнопку редактирования, он отображается пустым.
Поэтому, когда я нажимаю на режим редактирования, в столбце пароля должны отображаться символы маски пароля '*', а если пользователь меняет пароль, он должен обновляться в базе данных.
Я использую шифрование SHA1 для пароля, так что я думаю, что я могу получить значение пароля из БД и сохранить его на главной странице не будет проблемой безопасности.
2 ответа
Наконец-то я нашел решение этой проблемы с помощью jQuery.
Может быть кому-то пригодится.
<asp:TemplateField HeaderText="Password">
<EditItemTemplate>
<asp:TextBox ID="txtPassword" runat="server" Width="98%"
TextMode="Password" MaxLength="50" Text='<%# Bind("UserPassword") %>' CssClass="blankPassword"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server" ErrorMessage="Required"
Display="Dynamic" ControlToValidate="txtPassword" ValidationGroup="Saving" CssClass="RequiredValidationMessage"></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblPassword" runat="server" Text='*****'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtNewPassword" runat="server" Text='<%# Bind("UserPassword") %>' Width="95%"
TextMode="Password" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvNewPassword" runat="server" ErrorMessage="Required"
Display="Dynamic" ControlToValidate="txtNewPassword" ValidationGroup="Adding" CssClass="RequiredValidationMessage"></asp:RequiredFieldValidator>
</FooterTemplate>
<ItemStyle Width="30%" />
</asp:TemplateField>
<script type="text/javascript" language="javascript" charset="utf-8">
$(document).ready(function() {
$(function() {
$("input[id$='txtPassword']").live("click", function() {
$tb = $(this);
$("#PasswordEdited").val("true");
$tb.val("");
})
});
$(function() {
$(".blankPassword").each(function() {
$tb = $(this);
$tb.val('*****');
$tb.removeClass("blankPassword");
})
});
});
</script>
TextBox внутри EditItemTemplate. Затем попробуйте добавить атрибут значения в TextBox, как показано ниже.
<asp:TextBox ID="txtNewPassword" runat="server" Text='<%# Bind("UserPassword") %>' Value='<%# Bind("UserPassword") %>' Width="95%" TextMode="Password" MaxLength="50"></asp:TextBox>
Надеюсь, что это работа!!!!