2

我希望在 ASP 中继器上设置排序。查看我的中继器代码:

 <asp:Repeater runat="server" ID="RptClientDetails">
                    <HeaderTemplate>
                        <table id="example" class="dynamicTable table table-striped table-bordered table-primary">
                            <thead>
                                <tr>
                                    <th>

                                 <a href="#" onclick="ClientSort('ClientID')">Client ID</a>


                                    </th>
                                    <th>
                                     <a href="#" onclick="ClientSort('Name')">Name</a>


                                    </th>
                                    <th>
                                     <a href="#" onclick="ClientSort('TotalBalanceDue')">Total Balance Due</a>


                                    </th>
                                </tr>
                            </thead>
                            <tbody>
                    </HeaderTemplate>
                    <ItemTemplate>

在这里,我正在调用 javascript 函数。查看我的javascript函数代码:

function ClientSort(SortExpress) {

           <%= Sorting(SortExpress) %>
         }

从这里我想调用我的 .net 服务器端函数。

public void Sorting(string SortExpression)
{
    string s = SortExpression;

}

所以,你知道我怎么称呼它吗?或者直接从中继器我可以调用这个服务器端函数..谢谢

4

4 回答 4

2

您不能简单地ASP.NET从 JavaScript 中调用 -method。这是因为 ASP.NET 是纯粹的服务器端,而 JavaScript 是客户端。
ASP.NET 从您的 .NET 代码生成 HTML 和 JavaScript,这仅在回发或初始加载期间发生。
ASP.NET 呈现一个边,提供它,从这一刻开始,直到回发。

请参阅ASP.NET 页面生命周期这篇文章。

于 2013-05-10T05:05:37.330 回答
2

您可以直接从转发器控件调用服务器端代码,只需使用 Linkbutton 而不是 href。

<asp:Repeater runat="server" ID="RptClientDetails">
   <HeaderTemplate>
            <table id="example" class="dynamicTable table table-striped table-bordered table-primary">
                <thead>
                    <tr>
                        <th>
                            <%--<a href="#" onclick="ClientSort('ClientID')">Client ID</a>--%>
                            <asp:LinkButton ID="lbtn" Text="Client ID" ForeColor="Blue" OnCommand="lbtnSorting_Click" CommandArgument="ClientID" runat="server"></asp:LinkButton>
                        </th>
                        <th>
                            <asp:LinkButton ID="LinkButton1" Text="Name" ForeColor="Blue" OnCommand="lbtnSorting_Click" CommandArgument="Name" runat="server"></asp:LinkButton>
                            <%--<a href="#" onclick="ClientSort('Name')">Name</a>--%>
                        </th>
                        <th>
                            <asp:LinkButton ID="LinkButton2" Text="Total Balance Due" ForeColor="Blue" OnCommand="lbtnSorting_Click" CommandArgument="TotalBalanceDue" runat="server"></asp:LinkButton>
                            <%--<a href="#" onclick="ClientSort('TotalBalanceDue')">Total Balance Due</a>--%>
                        </th>
                    </tr>
                </thead>
                <tbody>
        </HeaderTemplate>
</asp:Repeater>

以及背后的代码:

protected void lbtnSorting_Click(object sender, CommandEventArgs e)
    {
        string s = e.CommandArgument.ToString();
    }
于 2013-05-10T05:24:30.330 回答
1

要在不重新加载页面的情况下调用服务器端代码,请使用 jquery ajax 函数:http ://api.jquery.com/jQuery.ajax/

于 2013-05-10T05:04:21.900 回答
0

我通过以下代码解决了类似的问题...希望有人会受益:-我需要通过文本框的 Onblur 从客户端调用服务器端函数(按钮单击事件功能):

asp:TextBox ID="txtNum" runat="server" CssClass="Textbox" Width="170px" MaxLength="8" onblur="javascript:return check2();"/>"

 //JAVASCRIPT - onblur calls button click serverside function
 function check2() {
     document.getElementById("<%=btncheck.ClientID%>").click(); 
 }

asp:Button ID="btncheck" runat="server" Text="Verify" OnClick="check1" />

//CODE BEHIND - On clicking the Button
protected void check1(object sender, EventArgs e)
{
    string str1 = txtBox.Text;
    CheckCCN2(str1);        
}
//Onblur of the Textbox txtNum   
public void CheckCCN2(string strCCNNum)
{
  //all your server side code    
}
于 2014-08-22T19:26:41.180 回答