JavaScript 控制 datagrid 中的模板列

yuanmanguo 2009-03-06 11:04:30
前台页面datagrid的代码如下

<asp:TemplateColumn HeaderText="财务金额">
<ItemTemplate>
<asp:TextBox ID="tbFinanceCash" runat="server" Width="100%" CssClass="form" ></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="选择">
<ItemStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" HorizontalAlign="Center" />
<ItemTemplate>
<asp:CheckBox ID="ckbSelect" runat="server" />
</ItemTemplate>
<HeaderStyle Width="35px" />
</asp:TemplateColumn>


希望实现功能:
1.TextBox的值变化时,判断TextBox的值是否为浮点数,汇总CheckBox选择的财务金额的总值
2.选择CheckBox时,判断TextBox的值是否为浮点数,汇总CheckBox选择的财务金额的总值

注:用JavaScript实现,希望代码比较详细(前台,后台一起)

先谢谢了
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sprc_lcl 2009-03-06
  • 打赏
  • 举报
回复
if(cbitem.type=='checkbox' && cbitem.id.indexOf('ckbSelect')>=0)
改为
if(cbitem.type=='checkbox' && cbitem.id.indexOf('ckbSelect')>=0 && cbitem.checked)


   protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
TextBox tb = (TextBox)e.Item.FindControl("tbFinanceCash");
tb.Attributes.Add("onkeyup","checktb2(this);");
CheckBox cb = (CheckBox)e.Item.FindControl("ckbSelect");
cb.Attributes.Add("onchange","sumcheck();");
}
}
yuanmanguo 2009-03-06
  • 打赏
  • 举报
回复
ths
试试看先
sprc_lcl 2009-03-06
  • 打赏
  • 举报
回复
var cbs = document.getElementsByTagName('input');
改为:
var cbs = datagrid.getElementsByTagName('input');//可不改,效率稍好
sprc_lcl 2009-03-06
  • 打赏
  • 举报
回复
<script language="javascript">
var datagrid = document.getElementById('<%= MyDataGrid.CliendId %>');
function CheckFloat(str)
{
var matchstr=/^\d+(\.\d+)?$/;
return matchstr.test(str)
}
function checktb(tb)
{
if(!CheckFloat(tb.value))
{
alert('请输入数字');
tb.focus();
return false;
}
return true;
}
function checktb2(tb)
{
if(checktb(tb))
{
sumcheck();
}
}

function sumcheck()
{
var sums = 0;
var cbs = document.getElementsByTagName('input');
for(var i=0;i<cbs.length;i++)
{
var cbitem=cbs[i];
if(cbitem.type=='checkbox' && cbitem.id.indexOf('ckbSelect')>=0)//此处你打前台生成的html调整
{
var tb = document.getElementById(cbitem.id.replace('ckbSelect','tbFinanceCash'));//此处你打前台生成的html调整
if(checktb(tb))
{
sums += praseFloat(tb.value);
}
else
{
return;
}
}
}
alert(sums);
}
</script>

    protected void MyDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
TextBox tb = (TextBox)e.Item.FindControl("tbFinanceCash");
tb.Attributes.Add("onkeyup","checktb2(this);");
}
}
}

//未测试
sprc_lcl 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yuanmanguo 的回复:]
cb.Attributes.Add("onchange","sumcheck();");

CheckBox 触发不了。


~.~ 我是JavaScript菜鸟
[/Quote]
改为
cb.Attributes.Add("onclick","sumcheck();");
sprc_lcl 2009-03-06
  • 打赏
  • 举报
回复
var datagrid = document.getElementById(' <%= MyDataGrid.ClientId%>'); //写错了,可以不要,是为了减少搜索元素范围,看二楼
yuanmanguo 2009-03-06
  • 打赏
  • 举报
回复
cb.Attributes.Add("onchange","sumcheck();");

CheckBox 触发不了。


~.~ 我是JavaScript菜鸟
yuanmanguo 2009-03-06
  • 打赏
  • 举报
回复
一生你好,

var datagrid = document.getElementById('<%= MyDataGrid.CliendId %>');


这句有什么用吗?


编译不了

编译器错误信息: CS0117: “System.Web.UI.WebControls.DataGrid”并不包含“CliendId”的定义

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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