用户控件内如何使用JS或AJAX,达到某无刷新计算问题...
用户控件xfp.ascx内几个TextBox,如:数量、单价、总价
使用AJAX技术,使总价自动计算出来:
xfp.ascx.cs 中-----------------------------------------------------------------------
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(xfp));
k_name.Text=name; //用户控件的一个自定义属性:货物名称
k_xh.Text=xh; //用户控件的一个自定义属性:货物型号
k_sl.Text=sl; //用户控件的一个自定义属性:数量
K_dj.Text="0.00"; //单价-文本框
k_zj.Text="0.00"; //总价-文本框
}
[Ajax.AjaxMethod()]
public string Getzj(string str)
{
double d_dj=Convert.ToDouble(str); //单价
double d_sl=Convert.ToDouble(sl); //数量,能否如此直接用控件的属性值?
double d_zj=d_dj*d_sl;
return d_zj.ToString(); //返回总价
}
xfp.ascx 中-----------------------------------------------------------------------
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="xfp.ascx.cs" Inherits="sys.ck.xfp"%>
<table width="586" cellpadding="0" cellspacing="0">
<tr>
............略...........
<asp:TextBox id="k_dj" runat="server" Width="100" onblur="xfp_Ajax()">0</asp:TextBox>
<asp:TextBox id="k_zj" runat="server" Width="100">0</asp:TextBox>
............略...........
</tr>
</table>
<script language="javascript">
function xfp_Ajax()
{
var first=document.getElementById("<%=k_dj.ClientID%>");
xfp.Getzj(first.value,callback_Setzj);
}
function callback_Setzj(res)
{
var obj=document.getElementById("<%=k_zj.ClientID%>");
obj.value=res.value;
}
</script>
-------------------------------------------------------------------------------
另外,此用户控件被父页面循环载入了若干次:
int i=0;
foreach (DataRow dlrow in mysele.Rows)
{
xfp myfp = (xfp)LoadControl("xfp.ascx"); //载入控件...若干次
myfp.ID = "myfp_"+i.ToString();
myfp.Name = dlrow["name"].ToString();
myfp.Xh = dlrow["xh"].ToString();
myfp.Sl = dlrow["sl"].ToString();
Panel1.Controls.Add(myfp);
i++;
}
测试了代码,结果只是最后一次载入的用户控件的总价框有反应,但得到的值也不对...
对JS不大懂,还望大家赐教!
谢谢!