部分代码如下:
<asp:GridView ID="GridView_Content" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" AutoGenerateColumns="False" PageSize="100" Width="100%"
Font-Names="微软雅黑,新宋体,宋体" Font-Size="9pt"
onrowdatabound="GridView_Content_RowDataBound" >
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField>
<HeaderStyle BackColor="White" CssClass="gridviewlogo" />
<ItemStyle Width="15px" />
<ItemTemplate>
<table border="0" cellpadding="1" cellspacing="1" width="16">
<tr>
<td width="12">
<img height="10" src="../Image/point.png" width="10" /></td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="学号" HtmlEncode="false" HeaderText="学号">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="学生姓名" HtmlEncode="false" HeaderText="姓名">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="课程名称" HtmlEncode="false" HeaderText="课程">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:TemplateField HeaderText="平时成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="期末成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_Score" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" ForeColor="Black" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView> 想实现的功能是:
客户端在Gridview中每一列"平时成绩""期末成绩"输入分数之后, 该列的总成绩即为平时成绩*比例+期末成绩*比例之和, 应该是JS实现,但是不知道该怎么写,故发此帖,希望各位能给予指点,感激不尽~
<asp:GridView ID="GridView_Content" runat="server" CellPadding="4" ForeColor="#333333"
GridLines="None" AutoGenerateColumns="False" PageSize="100" Width="100%"
Font-Names="微软雅黑,新宋体,宋体" Font-Size="9pt"
onrowdatabound="GridView_Content_RowDataBound" >
<RowStyle BackColor="#EFF3FB" />
<Columns>
<asp:TemplateField>
<HeaderStyle BackColor="White" CssClass="gridviewlogo" />
<ItemStyle Width="15px" />
<ItemTemplate>
<table border="0" cellpadding="1" cellspacing="1" width="16">
<tr>
<td width="12">
<img height="10" src="../Image/point.png" width="10" /></td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="学号" HtmlEncode="false" HeaderText="学号">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="学生姓名" HtmlEncode="false" HeaderText="姓名">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:BoundField DataField="课程名称" HtmlEncode="false" HeaderText="课程">
<HeaderStyle BackColor="White" Font-Size="14px" ForeColor="#002B5F"
HorizontalAlign="Left" />
<ItemStyle Width="150px" />
</asp:BoundField>
<asp:TemplateField HeaderText="平时成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="期末成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="总成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_Score" runat="server" Width="50px" onkeyup="javascript:textChange()"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#2461BF" ForeColor="Black" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView> 想实现的功能是:
客户端在Gridview中每一列"平时成绩""期末成绩"输入分数之后, 该列的总成绩即为平时成绩*比例+期末成绩*比例之和, 应该是JS实现,但是不知道该怎么写,故发此帖,希望各位能给予指点,感激不尽~
{
var pt=document.getElementById(ptID);
var f=document.getElementById(fID);
if((pt.value!='')&&(f.value!=''))
{
var ptVal=parseFloat(pt.value);
if(isNaN(ptVal))
{
alert('请正确输入平时成绩的分数');
return;
}
var fVal=parseFloat(f.value);
if(isNaN(fVal))
{
alert('请正确输入期末成绩的分数');
return;
}
document.getElementById(sID).value=ptVal+fVal;
}
else
{
return;
}
}
<asp:TemplateField HeaderText="平时成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" <%# GetJsMethod(sender)%> > </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="期末成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" <%# GetJsMethod(sender)%> > </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
protected void GetJsMethod(TextBox txt)
{
TextBox txtPT = txt.NamingContainer.FindControl("TextBox_PeaceTimeScore") as TextBox;
TextBox txtF = txt.NamingContainer.FindControl("TextBox_FinalScore") as TextBox;
TextBox txtS = txt.NamingContainer.FindControl("TextBox_Score") as TextBox;
if (txtPT != null && txtF != null && txtS != null)
{
txt.Attributes.Add("onkeyup", string.Format("textChange('{0}','{1}','{2}')", txtPT.ClientID, txtF.ClientID, txtS.ClientID));
}
}
JScript codefunction textChange(ptID,fID,sID)
{var pt=document.getElementById(ptID);var f=document.getElementById(fID);if((pt.value!='')&&(f.value!=''))
{var ptVal=parseFloat(pt.value);if(isNaN(ptVal))
{
alert('请正确输入平时成绩的分数');return;
}var fVal=parseFloat(f.value);if(isNaN(fVal))
{
alert('请正确输入期末成绩的分数');return;
}
document.getElementById(sID).value=ptVal+fVal;
}else
{return;
}
}
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" onkeyup="<%# GetJsMethod(sender as TextBox)%>" > </asp:TextBox>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" onkeyup="<%# GetJsMethod(sender as TextBox)%>" > </asp:TextBox>
protected string GetJsMethod(TextBox txt)
{
string result = string.Empty;
TextBox txtPT = txt.NamingContainer.FindControl("TextBox_PeaceTimeScore") as TextBox;
TextBox txtF = txt.NamingContainer.FindControl("TextBox_FinalScore") as TextBox;
TextBox txtS = txt.NamingContainer.FindControl("TextBox_Score") as TextBox;
if (txtPT != null && txtF != null && txtS != null)
{
result = string.Format("textChange('{0}','{1}','{2}')", txtPT.ClientID, txtF.ClientID, txtS.ClientID);
}
return result;
}
这句就可以看出来
应该全部在客户端实现。
<asp:TemplateField HeaderText="平时成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" onchange="CountPoint1(this);" > </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="期末成绩">
<HeaderStyle BackColor="White" ForeColor ="#002B5F" />
<ItemStyle Width="50px" />
<ItemTemplate>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" onchange="CountPoint(this);"> </asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
function CountPoint1(obj)
{
var tr=obj.parentNode.parentNode;
var TextBox_FinalScore = tr.childNodes[5].childNodes[0];//5就是这一行的第几列,你自己改下
var TextBox_Score = tr.childNodes[6].childNodes[0];//
TextBox_Score.value = 0+ obj.value + TextBox_FinalScore.value;//自己加吧
}
function CountPoint(obj)
{
}
var tr=_obj.parentNode.parentNode;
var num=tr.cells[1].firstChild;
var p=tr.cells[2].firstChild;
tr.cells[3].firstChild.value=(num.value==""?0:num.value)*(p.value==""?0:pri.value);
}
http://topic.csdn.net/u/20090411/14/995dadd2-e45e-47ea-8ab9-a583f86024df.html
var tr=obj.parentNode.parentNode;?看不大懂,JS 没咋学,能解释下吗?谢谢,不胜感激
<asp:TextBox ID="TextBox_PeaceTimeScore" runat="server" Width="50px" onkeyup="<%# GetJsMethod(sender as TextBox)%>" > </asp:TextBox>
<asp:TextBox ID="TextBox_FinalScore" runat="server" Width="50px" onkeyup="<%# GetJsMethod(sender as TextBox)%>" > </asp:TextBox>
C#: protected string GetJsMethod(TextBox txt)
{
string result = string.Empty;
TextBox txtPT = txt.NamingContainer.FindControl("TextBox_PeaceTimeScore") as TextBox;
TextBox txtF = txt.NamingContainer.FindControl("TextBox_FinalScore") as TextBox;
TextBox txtS = txt.NamingContainer.FindControl("TextBox_Score") as TextBox;
if (txtPT != null && txtF != null && txtS != null)
{
result = string.Format("textChange('{0}','{1}','{2}')", txtPT.ClientID, txtF.ClientID, txtS.ClientID);
}
return result;
}
<script type="text/javascript"> function pageLoad() {
}
function textChange() {
alert("331");
var gv = document.getElementById("GridView_Content");
alert("333");
var peaceTime = gv.getElementById("TextBox_PeaceTimeScore").value;
alert("334");
var finalTime = gv.getElementById("TextBox_FinalScore").value;
gv.getElementById("TextBox_Score").value = peaceTime + finalTime;
alert("12");
}</script>
function textChange(ptID,fID,sID)
{
var pt=document.getElementById(ptID);
var f=document.getElementById(fID);
if((pt.value!='')&&(f.value!=''))
{
var ptVal=parseFloat(pt.value);
if(isNaN(ptVal))
{
alert('请正确输入平时成绩的分数');
return;
}
var fVal=parseFloat(f.value);
if(isNaN(fVal))
{
alert('请正确输入期末成绩的分数');
return;
}
document.getElementById(sID).value=ptVal+fVal;
}
else
{
return;
}
}
document.getElementById(sID).value = ptVal * parseFloat(%=Session("peaceTimeProportion") %) + fVal* parseFloat(%=Session("finalProportion") %);
这个写法出错了,该怎么把SESSION 乘进去呢,谢谢
<%=Session("finalProportion")%>
<%=Session["finalProportion"]%>
var peaceTimeProportion = '<%=Session["peaceTimeProportion"]%>';
var finalProportion = '<%=Session["finalProportion"] %>';
//var fP = parseFloat(finalProportion);
//var pt = document.getElementById(ptID);
var f = document.getElementById(fID);
if ((pt.value != '') && (f.value != '')) {
var ptVal = parseFloat(pt.value);
if (isNaN(ptVal)) {
alert('请正确输入平时成绩的分数');
return;
}
var fVal = parseFloat(f.value);
if (isNaN(fVal)) {
alert('请正确输入期末成绩的分数');
return;
}
//alert(fP);
document.getElementById(sID).value = peaceTimeProportion * ptVal + finalProportion * fVal;
}
else {
return;
}帮我看看这个?还是不好使,呵呵 谢谢~