隐藏的输入不是从后面的代码中读取的

时间:2014-09-02 18:08:52

标签: c# asp.net .net telerik

我有一个隐藏的输入,用于存储存储过程使用的数字。我有一个按钮,当点击它时,更新输入的值。

<telerik:RadAjaxPanel>
.... other stuff ....

    <input type="hidden" id="NumberOfResults" runat="server" />
</telerik:RadAjaxPanel>

var numOfResults = RadAjaxPanel1.FindControl("NumberOfResults") as HtmlInputHidden;
numOfResults.Value = "250";

当我使用Firebug查看输入时,值应为250。

问题:下次调用输入时,值不是250,它是之前的值:

protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        var resultsInput = (HtmlInputHidden)RadAjaxPanel1.FindControl("NumberOfResults");
        int? numberOfResults = Convert.ToInt32(resultsInput.Value);            
        //This ^ should be 250

        long? routeID = Convert.ToInt64(RouteID.Value);

        RadGrid1.DataSource = GetDataTable(customerID, null, plantID, numberOfResults, routeID);
    }

如何让NeedDataSource事件看到新值?

注意:该值最初在Page_Load事件中设置:

public void Page_Load(object sender, EventArgs e)
    {           
        //Initial values for filtering
        NumberOfResults.Value = Convert.ToString(int.MaxValue);
    }

1 个答案:

答案 0 :(得分:2)

Page_Load将在每个帖子上触发,你应该检查IsPostBack而不是设置NumberOfResults.Value