在代码背后失去了价值

时间:2013-07-15 14:35:20

标签: c# textbox

我在VSTS 2012上使用C#上的框架4.0。

我默认设置为enable = false:

<dx:ASPxTextBox ID="ASPxTextBox_CP_dest" runat="server"  Width="60px" TabIndex="30" ClientInstanceName="ASPxTextBox_CP_dest" Enable="false">
    <ValidationSettings ErrorDisplayMode="ImageWithTooltip" SetFocusOnError="true">
        <RequiredField IsRequired="true" ErrorText="Champ Obligatoire"  />                                                       
    </ValidationSettings>
</dx:ASPxTextBox>

但是当用户点击复选框时:

<dx:ASPxCheckBox 
    ID="ASPxCheckBox_NewDesti" 
    runat="server" 
    ClientInstanceName="ASPxCheckBox_NewDesti" 
    OnCheckedChanged="Desti_CheckedChanged" 
    Text="Nouveau destinataire" ForeColor="Green" AutoPostBack="false" 
>

</dx:ASPxCheckBox>

然后我将它设置为enable = true:

protected void Desti_CheckedChanged(object sender, EventArgs e)
{
    if (ASPxCheckBox_NewDesti.Checked)
    {
        ASPxTextBox_CP_dest.Enabled = true;
        ASPxTextBox_CP_dest.BackColor = System.Drawing.Color.White;

         .....
    }
    else
    {
        ASPxTextBox_CP_dest.Enabled = false;
        ASPxTextBox_CP_dest.BackColor = System.Drawing.Color.LightGray;
    }

但是当我点击“保存”按钮时:

protected void ASPxButton_save_Click(object sender, EventArgs e)
{
    try
    {           
        string FA_Choisi = ASPxTextBox_CP_dest.Text.Substring(0, 2);

我得到了值ASPxTextBox_CP_dest.Text = empty

我在回发后失去了价值。这是因为默认情况下是enable = false?

2 个答案:

答案 0 :(得分:2)

  

我在回发后丢失了值,是因为默认启用   = false?

最有可能的原因。 enable=false的问题在于它将html元素中的属性设置为disabled,并且在请求中未提交任何具有禁用状态的元素。

我的解决方法是使用ReadOnly属性而不是禁用,并且可能使用特殊样式来显示禁用元素的外观,例如浅灰色背景。

答案 1 :(得分:0)

是的,ASP不会在回发中保留已禁用文本框的值。您应该使用ReadOnly属性,如下所示:

ASPxTextBox_CP_destAttributes.Add("readonly", "readonly");

或者,添加隐藏字段并使用它来存储相同的值。