【发布时间】:2016-08-02 18:00:13
【问题描述】:
请原谅我,但我对整个编程这件事还是新手,我无法找到更具体/更直接的问题来回答我的问题。
我有一个在 asp.net C# 中构建的表单,可以从数据库中提取数据。存储过程运行并在找到任何内容时自动填充一系列文本框 - 用户名、电子邮件、电话号码等。填充的字段随后被禁用,因此用户无法更改所输入的内容;如果需要,空字段仍可供用户填写。
但是,当用户提交表单时 - 如果验证失败 - 之前禁用的字段(带有数据的字段)将被启用,允许用户根据需要覆盖它们 - 但我需要防止这种情况发生;有没有办法阻止那些被我的原始数据禁用的字段在返回时重新启用?
我正在禁用按钮单击事件中的字段。这些字段在页面加载时被禁用:
protected void Page_Load(object sender, EventArgs e)
{
Page.Title = title;
Literal formHeader = (Literal)this.Master.FindControl("formHeader");
formHeader.Text = "Travel Booking Request";
if (!Page.IsPostBack)
{
Load_FormDetails();
Load_SeatingPreference();
Load_UserResponses();
Load_UndergroundTravelZones();
}
}
protected void Load_FormDetails()
{
string userName = "";
string userPhone = "";
string userTitle = "";
string userEmail = "";
List<KeyValuePair<string, string>> userDetails = Class1.GetUserDetails();
var name = userDetails.Where(kvp => kvp.Key == "UserDisplayName").Select(kvp => kvp.Value).First();
userName = name.ToString();
var phone = userDetails.Where(kvp => kvp.Key == "UserLandline").Select(kvp => kvp.Value).First();
userPhone = phone.ToString();
var jobtitle = userDetails.Where(kvp => kvp.Key == "UserJobTitle").Select(kvp => kvp.Value).First();
userTitle = jobtitle.ToString();
var email = userDetails.Where(kvp => kvp.Key == "UserEmail").Select(kvp => kvp.Value).First();
userEmail = email.ToString();
txtUserName.Text = userName;
if (txtUserName.Text != "")
{
txtUserName.Enabled = "false";
}
txtUserPhoneNumber.Text = userPhone;
if (txtUserPhoneNumber.Text != "")
{
txtUserPhoneNumber.Enabled = "false";
}
txtUserJobTitle.Text = userTitle;
if (txtUserJobTitle.Text != "")
{
pfptxtUserJobTitle.Enabled = "false";
}
txtUserEmail.Text = userEmail;
if (txtUserEmail.Text != "")
{
txtUserEmail.Enabled = "false";
}
}
【问题讨论】:
-
你在哪里添加
enabled=false,粘贴一些代码 -
对不起-我的错。我已经编辑了我的初始帖子以包含代码。
-
何时启用
TextBox? -
如果它不从数据库返回数据,我希望它启用(例如,如果数据库中没有存储电话号码) - 当用户提交表单时,他们就是这样可以完成缺失的(空白)字段,并且可以捕获该数据以供下次使用。如果该数据已存在于数据库中并且已被拉出,我不希望启用这些字段 - 我不希望我的用户更新这些字段中的现有数据