0

我正在使用javascript创建一个验证来验证1到100之间的页面大小。如果errorCtr = 0然后在codebenhind中调用GotoPage()。提前谢谢你。

<script type="text/javascript" language="javascript">
    function validatePageSize() {
        var pageSize = document.getElementById('MainContent_txtPageSize').value;
        var errorCtr = 0;
        if (pageSize == "") {
            alert('Records per page should be a valid number');
            errorCtr++;
        }
        if (pageSize < 0 || pageSize > 100) {
            alert('Records per page should be between 1 to 100');
            errorCtr++;
        }
        if (errorCtr == 0) {
            //missing code
        }
    }
</script>

代码隐藏:

void GotoPage()
{
    if (txtPageSize.Text.Trim() != "0" && txtPageSize.Text.Trim().Length > 0)
    {
        GridView1.PageSize = Convert.ToInt16(txtPageSize.Text.Trim());
        GetPOHistoryByParameterOrderByPONumber();
        btnShowAll.Visible = false;
    }
    else
    {
        GridView1.PageSize = 100;
        GetPOHistoryByParameterOrderByPONumber();
        btnShowAll.Visible = false;
        txtPageSize.Text = "100";
    } 
}
4

4 回答 4

2

你不能只用一个 javascript 调用来做到这一点,如果你想在服务器上运行代码,你需要回发。Javascript 代码在客户端(换句话说,在浏览器中)运行。您的 C# 代码在服务器上运行。您应该复制 C# 方法在客户端 JavaScript 代码中所做的事情。

于 2013-07-11T04:08:26.747 回答
1

您可以在 javascript 中调用服务器端函数。但是,如果您试图在该功能中操纵 soem 服务器端控件,则可能无法正常工作。但是,如果您尝试进行一些计算并从函数中获取返回值,那么您肯定可以实现这一点。

示例代码 Java 脚本

function callServer() {
alert('<%=LoadInvoiceForJob() %>');
}

代码背后

public string LoadInvoiceForJob()
{

    LBTest.Text = "Something";
    return "hello";

}
于 2013-07-11T05:29:58.810 回答
0

试试这个方法

WebForm2.aspx 页面:-

<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />
<script type="text/javascript">
    function validatePageSize() {
        var pageSize = document.getElementById('MainContent_txtPageSize').value;
        var errorCtr = 0;
        if (pageSize == "") {
            alert('Records per page should be a valid number');
            errorCtr++;
        }
        if (pageSize < 0 || pageSize > 100) {
            alert('Records per page should be between 1 to 100');
            errorCtr++;
        }
        if (errorCtr == 0) {
            PageMethods.Goto();
        }
    }
</script>
<div>
    <asp:TextBox ID="MainContent_txtPageSize" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="validatePageSize();" />
</div>
</form>

WebForm2.aspx.cs 页面:-

使用 System.Web.Services 添加;

 [WebMethod]
    public static void Goto()
    {
        if (txtPageSize.Text.Trim() != "0" && txtPageSize.Text.Trim().Length > 0)
        {
            GridView1.PageSize = Convert.ToInt16(txtPageSize.Text.Trim());
            GetPOHistoryByParameterOrderByPONumber();
            btnShowAll.Visible = false;
        }
        else
        {
            GridView1.PageSize = 100;
            GetPOHistoryByParameterOrderByPONumber();
            btnShowAll.Visible = false;
            txtPageSize.Text = "100";
        } 
    }
于 2013-07-11T05:34:54.793 回答
0

您可以使用 webMethode && 脚本方法。在后面代码中的以下代码上,我搜索用户名可用性和在 aspx 文件上,我从这个方法中得到结果:
1)代码后面(c# 代码):

   [System.Web.Services.WebMethod(EnableSession = true)]
    [System.Web.Script.Services.ScriptMethod()]
    public static string CheckUserName(string userName)
    {
        var sql = new SqlHelper();
        string returnValue = string.Empty;
        try
        {
            if (Regex.IsMatch(userName, @"^[A-Za-z0-9._]{1,20}$"))
            {
                returnValue = sql.GetUser(userName) != null & userName != null ? "false" : "true";
            }
            else
            {
                returnValue = "error";
            }
        }
        catch
        {
            returnValue = "false";
        }
        return returnValue;
    }

2)aspx(网页):

 <script type="text/javascript">
    function ShowAvailability() {
        window.PageMethods.CheckUserName(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess);
    }
    function OnSuccess(response) {
        var mesg = document.getElementById("<%=lblUsername.ClientID%>");
        mesg.innerHTML = "";
        switch (response) {
            case "true":
                mesg.style.color = "green";
                mesg.innerHTML = "نام کاربری قابل استفاده می باشد";
                break;
            case "false":
                mesg.style.color = "#ec6730";
                mesg.innerHTML = "نام کاربری استفاده شده است ";
                break;
            case "error":
                mesg.style.color = "#ec6730";
                mesg.innerHTML = "نام کاربری صحیح نمی باشد";
                break;
        }
    }
    function sleep(milliSeconds) {
        var startTime = new Date().getTime(); // get the current time
        while (new Date().getTime() < startTime + milliSeconds); // hog cpu

    }
    function OnChange(txt) {
        //sleep(100);
        document.getElementById("mesg").innerHTML = "";
    }
</script>

并且您应该以 runnat server attr 的形式使用具有以下结构的脚本管理器:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True" EnablePartialRendering="true"></asp:ScriptManager>
于 2013-07-11T05:37:53.493 回答