c# - 我在gridview 中有3 个文本框。当值输入到第一个和第二个文本框时,我想自动将结果写入第三个文本框
问题描述
我在gridview 中有3 个文本框。当值输入到第一个和第二个文本框时,我想自动将结果写入第三个文本框。
这是我的网格视图:
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" Width="892px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" AutoGenerateColumns="False">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="Ales Puanı">
<ItemTemplate>
<asp:TextBox ID="Txt_Ales" runat="server" Text='<%#Eval("alesSinavPuani") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Dil Puanı">
<ItemTemplate>
<asp:TextBox ID="txt_Dil" runat="server" Text='<%#Eval("dilSinavPuani") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Toplam">
<ItemTemplate>
<asp:Label ID="lbl_Toplam" runat="server" ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
解决方案
1) 为 2 个文本框提及 AutoPostBack="true" 2) 为 2 个文本框提及事件 OnTextChanged="Txt_TextChanged" 3) 在 TextChanged 事件中访问控件,找到结果逻辑并分配给第三个控件。在这种情况下,第三个控件被称为标签。它也可以是文本框。
ASPX 代码
<asp:GridView ID="GridView1" runat="server" CellPadding="3" Width="892px" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellSpacing="2">
<Columns>
<asp:TemplateField HeaderText="Ales Puanı">
<ItemTemplate>
<asp:TextBox ID="Txt_Ales" runat="server" Text='<%#Eval("alesSinavPuani") %>' OnTextChanged="Txt_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Dil Puanı">
<ItemTemplate>
<asp:TextBox ID="txt_Dil" runat="server" Text='<%#Eval("dilSinavPuani") %>' OnTextChanged="Txt_TextChanged" AutoPostBack="true"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Toplam">
<ItemTemplate>
<asp:Label ID="lbl_Toplam" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
TextChange 事件代码
protected void Txt_TextChanged(object sender, EventArgs e)
{
TextBox Txt_Ales = GridView1.Rows[((sender as TextBox).NamingContainer as GridViewRow).RowIndex].FindControl("Txt_Ales") as TextBox;
TextBox txt_Dil = GridView1.Rows[((sender as TextBox).NamingContainer as GridViewRow).RowIndex].FindControl("txt_Dil") as TextBox;
Label lbl_Toplam = GridView1.Rows[((sender as TextBox).NamingContainer as GridViewRow).RowIndex].FindControl("lbl_Toplam") as Label;
int num1, num2 = 0;
if (Txt_Ales != null && txt_Dil != null && lbl_Toplam != null)
{
int.TryParse(Txt_Ales.Text, out num1);
int.TryParse(txt_Dil.Text, out num2);
lbl_Toplam.Text = (num1 + num2).ToString();
}
}
推荐阅读
- moodle - 即使在个人资料所有者注销后,Moodle 用户个人资料页面仍在加载。注销后如何保护经过身份验证的页面?
- python - 打印时指定 pandas DataFrame 列之间的空格数
- windows - Visual Studio 2019 始终从任务栏图标以管理员身份运行
- vim - 有没有办法将资源管理器(netrw)的根目录设置为 Vim 中当前窗口的工作目录?
- vue.js - 我可以使用 Vue.compile 来编译 HTML 片段吗?
- r - 为点 R 生成圆形边界
- html - 如何将按钮放在图像的顶部?
- asp.net-mvc - 为什么我的 textBoxFor type="date" 不显示日期?
- java - 有谁知道是哪个结局?
- javascript - Node 14 ECMAScript 模块和包