各位好!我现在有一个问题:我用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表格每行的单击事件,但是返回的数据又都不是最新的,我弄了很久没有搞好,麻烦大家帮我看看。
3、现在的问题,如果在向ajax传递了额外的随机参数时(比如上文中的PW),得到的数据(也就是根据一个产品ID得到的库存信息,用table填充到div)是最新的,然而却不能响应id为tbSRF表格的每行的单击事件,如果不传递额外的随机参数PW,可以响应id为tbSRF表格每行的单击事件,但是返回的数据又都不是最新的,我弄了很久没有搞好,麻烦大家帮我看看。
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();
}
}
}
<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>