c# gridview 中的textbox计算并获取计算的结果

本文介绍了一个使用ASP.NET GridView结合JavaScript实现的实时计算功能。当用户在GridView的两个TextBox中输入数字时,会自动计算并在第三个TextBox中显示结果。此外,还介绍了如何在后台代码中获取这些计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GridView中有三个TextBox它们分别是txtNumber1、txtNumber2和txtNumber3,当用户在txtNumber1和txtNumber2中输入数字后将通过计算在txtNumber3中生成数字。

1)前台代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication11._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
   <title></title>
  
     <script language="javascript" type="text/javascript" src="jquery-1.5.1.min.js"></script>
  
     <script language="javascript" type="text/javascript">
         function calc(id, type) {//计算num1-num2
             var n1id; //txtNumer1的ClientID
             var n2id; //txtNumber2的ClientID
             var n3id; //txtNumber3的ClientID
             var hid; //hfNumber3的ClientID
             switch (type) {
                 case "num1":
                     n1id = id;
                     var strs = new Array();
                     strs = n1id.split('_');
                     n2id = strs[0] + '_' + strs[1] + '_' + "txtNumer2";
                     n3id = strs[0] + '_' + strs[1] + '_' + "txtNumer3";
                     hid = strs[0] + '_' + strs[1] + '_' + "hfNumber3";
                     var n1 = $('#' + n1id).val();
                     var n2 = $('#' + n2id).val();
                     if (n1 != '' && n2 != '') {
                         $('#' + n3id).val(parseInt(n1) - parseInt(n2));
                         $('#' + hid).val(parseInt(n1) - parseInt(n2)); //将数据存到隐藏域中以便后台获取
                     }
                     break;
                 case "num2":
                     n2id = id;
                     var strs = new Array();
                     strs = n2id.split('_');
                     n1id = strs[0] + '_' + strs[1] + '_' + "txtNumer1";
                     n3id = strs[0] + '_' + strs[1] + '_' + "txtNumer3";
                     hid = strs[0] + '_' + strs[1] + '_' + "hfNumber3";
                     var n1 = $('#' + n1id).val();
                     var n2 = $('#' + n2id).val();
                     if (n1 != '' && n2 != '') {
                         $('#' + n3id).val(parseInt(n1) - parseInt(n2));
                         $('#' + hid).val(parseInt(n1) - parseInt(n2)); //将数据存到隐藏域中以便后台获取
                     }
                     break;
                 default:
                     break;
             }
         }
      </script>
  
 </head>
  <body>
      <form id="form1" runat="server">
      <div>
          <asp:GridView ID="gvwTest" runat="server" AutoGenerateColumns="false" 
            onrowcommand="gvwTest_RowCommand">
              <Columns>
                  <asp:TemplateField HeaderText="num1">
                      <ItemTemplate>
                          <asp:TextBox ID="txtNumer1" runat="server" onblur="calc(this.id,'num1');"></asp:TextBox>
                      </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="num2">
                      <ItemTemplate>
                          <asp:TextBox ID="txtNumer2" runat="server" onblur="calc(this.id,'num2');"></asp:TextBox>
                      </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="num3">
                      <ItemTemplate>
                          <asp:TextBox ID="txtNumer3" runat="server" ReadOnly="true"></asp:TextBox>
                          <asp:HiddenField ID="hfNumber3" runat="server" />
                      </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="result">
                      <ItemTemplate>
                          <asp:Button ID="Button1" runat="server" Text="btnResult" CommandName="result" />
                      </ItemTemplate>
                  </asp:TemplateField>
              </Columns>
          </asp:GridView>
          <asp:Label ID="lblMessage" runat="server" Text="" style="color:Red;"></asp:Label>
      </div>
      </form>
  </body>
  </html>

 2)后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace WebApplication11
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindTest();
            }
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        private void BindTest()
        {
            DataTable dtTest = new DataTable();
            dtTest.Columns.Add(new DataColumn("test"));
            DataRow drTest1 = dtTest.NewRow();
            drTest1["test"] = "1";
            dtTest.Rows.Add(drTest1);
            DataRow drTest2 = dtTest.NewRow();
            drTest2["test"] = "2";
            dtTest.Rows.Add(drTest2);
            DataRow drTest3 = dtTest.NewRow();
            drTest3["test"] = "2";
            dtTest.Rows.Add(drTest3);
            gvwTest.DataSource = dtTest;
            gvwTest.DataBind();
        }
        /// <summary>
        /// 后台获取HiddenField的Value和TextBox的Text
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvwTest_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "result")
            {
                //获取当前row
                GridViewRow gridViewRow = (GridViewRow)((Button)e.CommandSource).NamingContainer;
                //后台获取HiddenField的Value发现其结果不为空
                HiddenField hfNum3 = (HiddenField)gridViewRow.FindControl("hfNumber3");
                string hfResult = hfNum3.Value;
                //后台获取TextBox的Text发现其结果为空原因是TextBox用了ReadOnly="true"
                TextBox txtNumer3 = (TextBox)gridViewRow.FindControl("txtNumer3");
                string txtResult = txtNumer3.Text;
                lblMessage.Text = hfResult;
            }
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值