用户控件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不大懂,还望大家赐教!
谢谢!
使用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不大懂,还望大家赐教!
谢谢!
解决方案 »
- 我遇到个javascript的问题,希望大家帮忙谢谢
- 一存储过程,正解即结贴
- 调用超星阅览器控件问题,,在线等.....
- 动态生成Table,如何获取table中控件的值?
- 我想通过超链接的方式弹出一个小的文本框,显示的是数据库中一段较长的文本,请问如何实现?
- ACCESS上的查询:where id in(@ids)-@ids可以为多个id值吗
- 请教一个访问xml的问题
- 【【求助,急急急】】被webshell提权了,有提权脚本代码。
- .net的方便是要付出代价的
- 学习ASP.net 2.0,是不是要安装vs2005,安装vs2003行吗?
- 请问ASP.NET排版问题
- C# 正负数问题,把负数转换成正数
注册事件:
k_dj.attribute.add("onblur","document.getElementById('" + k_zj.ClientID +"').value=PageClass.Getzj.value")//上面的PageClass指:调用该用户控件的页面的类名2.一下内容写在调用该用户控件的页面的cs中:
[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(); //返回总价
}
--〉
<asp:TextBox id="k_dj" runat="server" Width="100">0</asp:TextBox>
k_dj.attribute.add("onblur","document.getElementById('" + k_zj.ClientID +"').value=PageClass.Getzj(document.getElementById('"+ k_dj.ClientID +"').value,document.getElementById('"+ k_sl.ClientID +"').value ).value;")即public string Getzj(string 单价, string数量)