RadTextBox не обновляется

Привет я пытаюсь обновить некоторые значения базы данных с помощью простой формы с Telerik RadTextBoxes. Я могу установить значение текста без проблем, но когда дело доходит до сохранения при нажатии кнопки, значения не обновляются. Мой код для установки текстового поля находится в функции загрузки страницы, но я проверяю, если (!IsPostBack)

Вот мой HTML:

<div style="width:95%;">
<div style=" width:100%;float:left; background-color:#fff; border:1px solid #d1d2d3; margin-top:25px; padding:15px; -webkit-box-shadow: inset 1px 0px 5px 0px rgba(50, 50, 50, 0.10); -moz-box-shadow:    inset 1px 0px 5px 0px rgba(50, 50, 50, 0.10); box-shadow: inset 1px 0px 5px 0px rgba(50, 50, 50, 0.10);">
    <h2 style="float:left; width:50%;"><asp:Literal ID="litTitle" runat="server" Text="Add A New Zone" /></h2>
    <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Width="100%">
        <telerik:RadNotification runat="server" id="notifyError" Position="Center" Width="330" Height="130" EnableRoundedCorners="true" EnableShadow="true" Style="z-index: 35000"></telerik:RadNotification>

        <div style="float:right;margin-right:10px;margin-left:5px;"><telerik:RadButton ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" /></div><div style="float:right;margin-right:5px;"><telerik:RadButton ID="btnCancel" runat="server" Text="Cancel" OnClick="btnCancel_Click" /></div><div style="float:right;margin-right:5px;"><telerik:RadButton ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" OnClientClicked="confirm('Are you sure you wish to delete this zone?');" /></div>
        <div class="clear" style="clear:both;height:25px;"></div>
        <div style="width:100%;">
            <div style="float:left;">
                <div style="float:left; margin-left:10px; margin-right:5px; width:200px;">Zone Code:</div>
                <div style="float:left; margin-left:5px; margin-right:10px;"><telerik:RadTextBox ID="txtZoneName" runat="server" CausesValidation="false" Width="200"></telerik:RadTextBox></div>
            </div>
            <div class="clear" style="height:35px;clear:both;"></div>
            <div style="float:left;">
                <div style="float:left; margin-left:10px; margin-right:5px; width:200px;">Name:</div>
                <div style="float:left; margin-left:5px; margin-right:10px;"><telerik:RadTextBox ID="txtZoneCode" runat="server" CausesValidation="false" Width="200"></telerik:RadTextBox></div>
            </div>
            <div class="clear" style="height:35px;clear:both;"></div>
            <div>
                <div style="float:left; margin-left:10px; margin-right:5px; width:200px;">Monthly Book Page Goal:</div>
                <div style="float:left; margin-left:5px; margin-right:10px;"><telerik:RadTextBox ID="txtZoneBookGoal" runat="server" CausesValidation="false" Width="200"></telerik:RadTextBox></div>
            </div>
            <div class="clear" style="height:45px;clear:both;"></div>
            <div style="width:250px; margin:0 auto;">
                <div style="float:left;"><telerik:RadButton ID="btnCreate" runat="server" Text="Save" OnClick="btnCreate_Click" /></div>
            </div>
        </div>
    </telerik:RadAjaxPanel>
</div>
</div>

Вот мой с #:

protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            if(Request.Params["z"] != null)
            {
                Zones z = Zones.GetByID(Utils.GetLong(Request.Params["z"]));

                this.txtZoneCode.Text = z.Code;
                this.txtZoneName.Text = z.Name;
                this.txtZoneBookGoal.Text = Utils.GetString(z.BookGoal);
                this.litTitle.Text = "Edit Zone";
            }
        }
    }

protected void btnSave_Click(object sender, EventArgs e)
    {
        bool valid = true;
        string error = "";

        if (this.txtZoneCode.Text == "")
        {
            valid = false;
            error += "- Code<br/>";
        }

        if (this.txtZoneName.Text == "")
        {
            valid = false;
            error += "- Name<br/>";
        }

        if (valid)
        {
            if (Request.Params["z"] != null)
            {
                Zones z = Zones.GetByID(Utils.GetLong(Request.Params["z"]));

                z.Code = this.txtZoneCode.Text;
                z.Name = this.txtZoneName.Text;
                z.BookGoal = Utils.GetInt(this.txtZoneBookGoal.Text);

                z.Save();

                if (z.ZoneID > 0)
                {
                    Response.Redirect("ManageZones.aspx?v=1", true);
                }
                else
                {
                    this.notifyError.Title = "Zone update was not successfull!";
                    this.notifyError.Text = "There was an error saving your zone. Please try again";
                    this.notifyError.Show();
                    return;
                }
            }
            else
            {
                Zones z = new Zones();

                z.Code = this.txtZoneCode.Text;
                z.Name = this.txtZoneName.Text;
                z.BookGoal = Utils.GetInt(this.txtZoneBookGoal.Text);

                z.Save();

                if (z.ZoneID > 0)
                {
                    Response.Redirect("ManageZones.aspx?v=1", true);
                }
                else
                {
                    this.notifyError.Title = "Zone creation was not successfull!";
                    this.notifyError.Text = "There was an error saving your zone. Please try again";
                    this.notifyError.Show();
                    return;
                }
            }
        }
        else
        {
            this.notifyError.Title = "Please fill in the following to continue:";
            this.notifyError.Text = error;
            this.notifyError.Show();
            return;
        }
    }

Роберт Зено

2 ответа

Я изменил OnClientClicked на OnClientClicking, потому что произошла ошибка JavaScript, из-за которой страница ломалась и не извлекала правильные данные

У вас есть четыре кнопки - две кнопки имеют одинаковое имя Сохранить.

Похоже, вы нажимаете не так. Это меня тоже смущает.

protected void btnSave_Click(object sender, EventArgs e)
{
   // Not this event
}

protected void btnCreate_Click(object sender, EventArgs e)
{
   // You need to use this event.
}

Для лучшей дизайнерской практики

  1. Используйте CSS вместо встроенных стилей.
  2. Вам нужно правильно назвать кнопки. Например, SaveRadButton, CreateRadButton

НЕ используйте венгерскую нотацию, такую ​​как btnXXX, особенно если вы используете сторонние элементы управления, такие как telerik.

Другие вопросы по тегам