将Gridview一行TextBox值传递给另一行文本框值

时间:2014-11-21 11:27:31

标签: c# asp.net

我有10行的Gridview,每行有2列,即Textbox和Checkbox。

我要做的是必须输入文本框值为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 个答案:

答案 0 :(得分:0)

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

  1. 像这样创建一个gridview
  2. <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. 我使用此数据表作为数据源

      DataTable table = new DataTable();     table.Columns.Add(&#34; txtcolumn&#34;,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");
      
    3. 我根据您的要求测试了这段代码。 (并且对于这种糟糕的格式感到抱歉。我会稍后再做或者请一些正确的格式化):)