如何在没有for循环的情况下找到静态控制的控制

时间:2016-08-07 05:20:37

标签: asp.net gridview

          private void searchgrid()
    {

            GridViewRow HeaderGridRow = new GridViewRow(0, 1, DataControlRowType.Header, DataControlRowState.Normal);
            TableCell HeaderCell = new TableCell();

            HeaderCell.Text = "";
            TextBox abc = new TextBox();
            HeaderCell.Controls.Add(abc);
            HeaderCell.ColumnSpan = 3;
            HeaderGridRow.Cells.Add(HeaderCell);

            HeaderCell = new TableCell();
            HeaderCell.Text = "";
            TextBox search = new TextBox();
            search.ID = "search1";
            HeaderCell.Controls.Add(search);
            HeaderCell.ColumnSpan = 3;
            HeaderGridRow.Cells.Add(HeaderCell);

            HeaderCell = new TableCell();

            Button btn_chk = new Button();
            btn_chk.Text = "go";
            HeaderCell.Controls.Add(btn_chk);
            HeaderCell.ColumnSpan = 1;
            btn_chk.Click += new EventHandler(btnClick);
            HeaderGridRow.Cells.Add(HeaderCell);

            //tbl1.Controls.Add(HeaderGridRow);

            //btn_chk.CommandName = "btn_chk";

            GridView2.Controls[0].Controls.AddAt(0, HeaderGridRow);
            //GridView2.Controls[0].Controls.AddAt(0, tbl1);


        }

我有一个gridview,里面有另一个动态创建的gridview,它有一个textbox.how来找到对这个textbox的控制。通过循环获取值但是我得到了所需的输出。所以我只需要一个文本框值...请帮助

1 个答案:

答案 0 :(得分:0)

你可以在没有这样的循环的情况下做到这一点:

GridView gv = GridView1.Rows[0].FindControl("GridView2") as GridView; 
TextBox tb = gv.Rows[0].FindControl("TextBox1") as TextBox;
string tbValue = tb.Text;

首先找到嵌套的GridView并将其强制转换,然后在嵌套的GridView中找到TextBox。

你仍然可以使用循环:

    foreach (GridViewRow parentRow in GridView1.Rows)
    {
        if (parentRow.RowType == DataControlRowType.DataRow)
        {
            GridView gv = (GridView)parentRow.FindControl("GridView2");
            foreach (GridViewRow childRow in gv.Rows)
            {
                if (childRow.RowType == DataControlRowType.DataRow)
                {
                    TextBox tb = (TextBox)childRow.FindControl("TextBox1");
                    string tbValue = tb.Text;
                }
            }
        }
    }