将网格视图一行文本框值传递给另一行文本框值

本文关键字:文本 一行 网格 视图 值传 | 更新日期: 2023-09-27 18:31:17

我有 10 行的网格视图,每行有 2 列,即文本框和复选框。

我要做的就是输入文本框值为1000,然后单击第一行的复选框,然后值必须转到第二行的

文本框,然后单击第二行的复选框,然后值必须转到文本框的第三行,依此类推。

我试过这个,

protected void txtintroId_TextChanged(object sender, EventArgs e)
  {
        TextBox txt = (TextBox)sender;
        GridViewRow grid = ((GridViewRow)txt.Parent.Parent.Parent);
        TextBox txtIntro = (TextBox)txt.FindControl("txtintroId");
  }

在这里我得到第一行值,但我如何将其传递给第二行。

协助我

将网格视图一行文本框值传递给另一行文本框值

这是完整的工作代码(根据您的要求)

  1. 创建如下所示的网格视图

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField> <ItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("txtcolumn") %>'></asp:TextBox> </ItemTemplate>
</asp:TemplateField> <asp:TemplateField>
<ItemTemplate> <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox2_CheckedChanged" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>

  1. 在 C# 代码中添加函数

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e) { int rowNo=0; foreach (GridViewRow GV1 in GridView1.Rows) { rowNo++;// if (rowNo < GridView1.Rows.Count) //Checking that is this last row or not {
    //if no CheckBox chkbx= (CheckBox)GV1.FindControl("CheckBox1"); TextBox curenttxtbx = (TextBox)GV1.FindControl("TextBox1"); if (chkbx.Checked == true )
    `{

            int nextIndex = GV1.RowIndex + 1;//Next row
            TextBox txtbx = (TextBox)GridView1.Rows[nextIndex].FindControl("TextBox1");
            txtbx.Text = curenttxtbx.Text;
        }
    }
        //if yes
    else
    {
        //For last row
        //There is no next row
    }
    

    }}

  2. 我用这个数据表作为数据源

    数据表表 = 新的数据表(); 桌子。Columns.Add("txtcolumn", typeof(string));

    table.Rows.Add("1");
    table.Rows.Add("32");
    table.Rows.Add("32");
    table.Rows.Add("32");
    table.Rows.Add("3");
    table.Rows.Add("32");
    table.Rows.Add("32");
    

我测试了这段代码,它正在根据您的要求工作。(很抱歉这种格式错误。 我稍后会这样做,或者请一些机构更正格式:))