用户控件内如何使用JS或AJAX,达到某无刷新计算问题...

i169net1 2006-05-16 01:18:27
用户控件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不大懂,还望大家赐教!
谢谢!

...全文
456 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyf19 2006-05-16
  • 打赏
  • 举报
回复
用AjaxPro.Net可以方便解决
smile9961 2006-05-16
  • 打赏
  • 举报
回复
k_dj.attribute.add("onblur","document.getElementById('" + k_zj.ClientID +"').value=PageClass.Getzj.value")

--〉
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数量)
smile9961 2006-05-16
  • 打赏
  • 举报
回复
<asp:TextBox id="k_dj" runat="server" Width="100" onblur="xfp_Ajax()">0</asp:TextBox>
--〉
<asp:TextBox id="k_dj" runat="server" Width="100">0</asp:TextBox>
smile9961 2006-05-16
  • 打赏
  • 举报
回复
1.在用户控件的page_load中为<asp:TextBox id="k_dj" runat="server" Width="100" onblur="xfp_Ajax()">0</asp:TextBox>
注册事件:
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(); //返回总价
}
llainn 2006-05-16
  • 打赏
  • 举报
回复
我记得在网上有一个文章说的是这个事……,你搜搜……

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧