首页 > 解决方案 > 我在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>

标签: c#asp.netgridview

解决方案


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();
            }
        }

推荐阅读