Отключено asp.net Текстовое поле возвращает старое значение после включения и изменения текста - PullRequest
2 голосов
/ 07 мая 2011

Моя проблема в том, что у меня есть текстовое поле asp, которое имеет значение (текст), но отключено (Enabled = "false")

после нажатия кнопки (Изменить) она становится включенной (Enabled = "true"), поэтому я могу изменить текст

-> После изменения текста и нажатия кнопки (Сохранить), принимает старое значение (текст) перед редактирование и сохранение его вместо нового ..

Эта проблема также возникает со свойством ReadOnly .

Я застрял в этом .. поэтому за любую помощь я буду благодарен.

    <telerik:RadAjaxPanel ID="AjaxPanel1" runat="server" LoadingPanelID="LoadingPanelTelerik">
<tr>
  <td align="right" valign="top">
      <asp:TextBox runat="server" ID="Email" CssClass="InputForm" /> 
  </td>
  </tr>
<tr>
  <td align="center" colspan="2" valign="bottom">
      <asp:Button ID="UpdateButton" runat="server" Text="تـعــديـل" OnClick="Enable_Info" Font-Size="Large" />
      <asp:Button ID="CancelButton" runat="server" Text="إلـغـاء" OnClick="Cancel_Info" Font-Size="Large" Visible="false"/> 
  </td>        
</tr>
</telerik:RadAjaxPanel>

Вот код C # ( Нет необходимости писать соединение SQL ):

 protected void Page_Load(object sender, EventArgs e)
{
    Email.Text = myDataTable.Rows[0][2].ToString();
    Email.DataBind();

    Email.Enabled = false;

}

    protected void Enable_Info(object sender, EventArgs e)
{
    if (UpdateButton.Text == "تـعــديـل")
    {


        Email.Enabled = true;

        UpdateButton.Text = "حــفـظ";

        CancelButton.Visible = true;

    }
    else if (UpdateButton.Text == "حــفـظ")
    {

        AjaxPanel1.EnableAJAX = false;

        int CustomerId = System.Convert.ToInt32(Request.Cookies["User"]["CustomerId"]);
        string email = Email.Text;

        SqlConnection conn = new SqlConnection(ArabShoppingConfiguration.DbConnectionString);

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "update Customer set Email = '" + email + "' where Id = '" + CustomerId + "'";

        try
        {
            conn.Open();
            cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            conn.Close();
        }

    }
}

protected void Cancel_Info(object sender, EventArgs e)
{

    Email.Enabled = false;

    UpdateButton.Text = "تـعــديـل";

    CancelButton.Visible = false;
}

1 Ответ

4 голосов
/ 08 мая 2011

Хорошо, поэтому проблема в том, что вы устанавливаете Email.Text при загрузке страницы, которая запускается каждый раз, когда страница загружается, чтобы включить все посты обратно. Загрузка страницы запускается перед методом Enable_Info, поэтому он каждый раз меняет текст обратно. Все, что вам нужно сделать, это изменить ваш код page_load так, чтобы он запускался только ПЕРВЫЙ раз, когда страница загружалась, а НЕ на обратных передачах:

protected void Page_Load(object sender, EventArgs e)
{
  if(!Page.IsPostBack)
  {
    Email.Text = myDataTable.Rows[0][2].ToString();
    Email.DataBind();

    Email.Enabled = false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...