各位好!我现在有一个问题:我用jQuery发起了一个ajax的get请求,用来得到一个aspx页面中的数据,具体情况是这样:1、aspx页面根据ajax传递的参数得到相应的数据并生成一串html信息(我这里的情况是:根据一个产品ID参数得到它的所有库存信息),我生成的信息是以table形式<table id='tbSRF'></table>,然后有一些动态生成的表格行(tr),并用response.write来输出这些html。2、在向ajax发起请求的页面里有一个div(id为divSRF),我现在点击一个input type='button'的按钮,发起ajax请求,并传递了两个参数,一个是基本的参数,比如产品ID(类似:{productId:1,PW:Math.random()}),PW是一个随机参数,如果不用这个随机参数每次从aspx得到的数据都不会更新,发起请求后我将aspx中得到的表格内容html追加到id为divSRF的div中,然后再用jQuery访问这个追加到div中的表格(在aspx中生成的,id为tbSRF),给它的每行添加事件,单击某行就返回值填充页面中的某个TextBox,然后关闭div。
3、现在的问题,如果在向ajax传递了额外的随机参数时(比如上文中的PW),得到的数据(也就是根据一个产品ID得到的库存信息,用table填充到div)是最新的,然而却不能响应id为tbSRF表格的每行的单击事件,如果不传递额外的随机参数PW,可以响应id为tbSRF表格每行的单击事件,但是返回的数据又都不是最新的,我弄了很久没有搞好,麻烦大家帮我看看。

解决方案 »

  1.   

    下面是代码:
    1、apsx中的
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using ProjectBLLFramework;public partial class Inventory_GetAvailableQuantityLargerThanZero : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.QueryString["productID"] != null)
            {
                int productId = int.Parse(Request.QueryString["productID"].ToString());
                ENTStockInEOList availableStocks = new ENTStockInEOList();            
                System.Collections.Generic.List<ENTStockInEO> stocks =
                    availableStocks.GetByAvailableQuantityLargerThanZero(productId);
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append("<table id='tbSRF' style='font-weight:bold;' cellspacing='0' cellpadding='0' border='1' style='cursor:pointer;' bordercolordark='#efefef' bordercolorlight='#333333'>");
                sb.Append("<tr style='background-color:green;height:25px;color:#ffffff;'>");
                sb.Append("<th>ID</th>");
                sb.Append("<th>LotNo</th>");
                sb.Append("<th>Barcode</th>");
                sb.Append("<th>Quantity</th>");
                sb.Append("<th>OrderedQty</th>");
                sb.Append("<th>AvailableQty</th>");
                sb.Append("</tr>");
                foreach (ENTStockInEO stock in stocks)
                {
                    string lotNo;
                    string barcode;
                    if (stock.LotNo.ToString() == string.Empty)
                        lotNo = "/";
                    else lotNo = stock.LotNo;
                    if (stock.Barcode.ToString() == string.Empty)
                        barcode = "/";
                    else barcode = stock.Barcode;
                    sb.Append("<tr style='height:25px;text-align:center;background-color:#ceecd5;'>");
                    sb.Append("<td id='" + stock.ID + "'>" + stock.ID.ToString() + "</td>");
                    sb.Append("<td>" + lotNo + "</td>");
                    sb.Append("<td>" + barcode + "</td>");
                    sb.Append("<td>" + stock.Quantity.ToString() + "</td>");
                    sb.Append("<td>" + stock.OrderedQuantity.ToString() + "</td>");
                    sb.Append("<td>" + stock.AvailableQuantity.ToString() + "</td>");
                    sb.Append("</tr>");
                }
                sb.Append("</table>");
                Response.Clear();
                Response.Charset = "utf-8";
                Response.Buffer = true;
                this.EnableViewState = false;
                Response.ContentEncoding = System.Text.Encoding.UTF8;
                Response.ContentType = "text/plain";
                Response.Write(sb.ToString());
                Response.Flush();
                Response.Clear();
                Response.Close();
                Response.End();
            }
        }
    }
      

  2.   

    2、頁面部分
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder3" Runat="Server"> 
        <script type="text/javascript" src="../jQuery/jquery-1.6.2.min.js"></script> 
        <script type="text/javascript" src="../jQuery/jquery-ui-1.8.15.custom.min.js"></script>
        <script type="text/javascript">
                    
            $(function(event){
               
                $("[id$='txtPCFDate']").datepicker(
                {
                    showMonthAfterYear:true,
                    changeMonth:true,
                    changeYear:true,
                    dateFormat:"yy-mm-dd",
                    closeText:"Close",
                    duration:"fast",
                    showAmim:"fadeIn",                
                    showButtonPanel:true
                }
                );
                $("[id='btnSRF']").click(function()
                {
                    $("[id='divSRF']").toggle(400);                
                    document.getElementById("divSRF").innerHTML="";
                    $("[id='divSRF']").val("");
                    var productId=$("[id$='ddlProduct']").val();
                    $.get('../Inventory/GetAvailableQuantityLargerThanZero.aspx',
                    {productID:productId, PW:Math.random()},
                    function(data){$("[id='divSRF']").append(data)});                
                    
                    $("[id*=tbSRF] tr").each(function(index){
                /*$(this).hover(function(){
            $(this).css("background-color", "#e6e6e6");         
                }, function(){
            $(this).css("background-color", "");
                });*/
                
                //only need click event
                $(this).click(function(){
                    $("[id$='txtSRFValue']").val($(this).children("td:first").attr("id"));
                $("[id='divSRF']").toggle(400);             
                });
                });
                    
                    //***********can work ok*************
                    //{$("[id='divSRF']").css({display:'none'})});                
                    //*****load mothed does not work               
                    /*$("[id='divSRF']").load(
                    '../Inventory/GetAvailableQuantityLargerThanZero.aspx',{productID:productId}
                    );*/
                }
                );
            })
         </script> 
        <asp:Button ID="btnNewIO" runat="server" Text="New IO Number" 
            onclick="btnNewIO_Click" />  
        <asp:Label ID="lblParentIONumberId" runat="server" Visible="false"></asp:Label>           
        <table>
            <tr class="gridViewHeader">
                <td colspan="2">技術部下單填寫</td>
            </tr>
            <tr>
                <td>選擇貨品:</td>
                <td><asp:DropDownList ID="ddlProduct" runat="server" AutoPostBack="true" onselectedindexchanged="ddlProduct_SelectedIndexChanged"></asp:DropDownList></td>
            </tr>         
            <tr>
                <td>SRF位置:</td>
                <td><asp:TextBox ID="txtSRFValue" runat="server"></asp:TextBox>
                <input type="button" id="btnSRF" value="SRF..." />
                <asp:RegularExpressionValidator ID="revSRF" runat="server" ValidationExpression="^\d+(\.\d)?$" ControlToValidate="txtSRFValue" ErrorMessage="Invalid SRF value." SetFocusOnError="true" Display="Dynamic"></asp:RegularExpressionValidator>
                <div id="divSRF" style="display:none;"></div>           
                </td>
            </tr>
            
        </table>
            
    </asp:Content>