RadTextBox没有更新

时间:2015-02-04 22:46:52

标签: c# .net telerik ispostback 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>

这是我的c#:

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;
        }
    }

Robert Zeno

2 个答案:

答案 0 :(得分:1)

我将OnClientClicked更改为OnClientClicking,因为有一个javascript错误导致页面中断并且没有提取正确的数据

答案 1 :(得分:0)

您有四个按钮 - 两个按钮具有相同的名称保存。

看起来你错了。这让我也很困惑。

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
  3. DO NOT use Hungarian notation,例如btnXXX,尤其是当你使用像telerik这样的第三方控件时。