public string updateSort(GridView gv,string s) { int n = gv.Rows.Count; int m=gv.Rows[0].Cells.Count; string a = ""; setParam sp = new setParam(); sp.ParamValues=new string[n]; for (int i = 0; i < n; i++) { sp.ParamValues[i] = gv.Rows[i].Cells[m-2].FindControl("tb")==null?"0":((TextBox)gv.Rows[i].Cells[m-2].FindControl("tb")).Text; a += sp.ParamValues[i]+","; } return a; }返回:0,0,0
public void resetData(GridView gv)
{
int n = gv.Rows.Count;
if (n < 1)
{
return;
}
int m = gv.Rows[0].Cells.Count;
for (int i = 0; i < n; i++)
{
TextBox tb=new TextBox();
tb.ID="tb";
tb.Width = 20;
gv.Rows[i].Cells[m - 2].Controls.Add(tb);
gv.Rows[i].Cells[m - 1].Text = "aa"
} }
在另一个方法里通过gv.rows[i].findControl("tb")找不到,一直都是null
所以楼主要给生成的textbox 的id都赋不同的值
TextBox tb = new TextBox();
string id="tb"+i.ToString();
tb.ID = id;但是,楼主的代码,每一个gv.rows[i]有好多代码生成的TextBox
还得再加个循环解决id的赋值
public string updateSort(GridView gv,string s)
{
int n = gv.Rows.Count;
int m=gv.Rows[0].Cells.Count;
string a = "";
setParam sp = new setParam();
sp.ParamValues=new string[n];
for (int i = 0; i < n; i++)
{
sp.ParamValues[i] = gv.Rows[i].Cells[m-2].FindControl("tb")==null?"0":((TextBox)gv.Rows[i].Cells[m-2].FindControl("tb")).Text;
a += sp.ParamValues[i]+",";
}
return a;
}返回:0,0,0
而且我之前有张textbox加了标签,即tb.id="tb"+i.ToString();
然后进行搜索gv.rows[i].findControl("tb"+i.toString())也是一样找不到。
aspx.cs文件里面就绑定数据,然后手动添加一列放一个textBox,现在就是要点击页面上一个按钮后将gridview中的texbox的值批量更新到数据库,所以需要获得这个textbox里面的值。
Label_type.Text = lbltype.Text.ToString();