怎样获取gridview中动态生成的textbox的值
动态生成出来的textbox根据id获取不到值,用什么办法可以获取呀? --------------------编程问答-------------------- 需要从TextBox所在的容器内取。比如:放在GridView中就需要gridView1.FindControl(id) as TextBox其次,注意获取的时候是否经过了什么动作,页面回发等问题。 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 都一样的呀,用findcontrol()。 --------------------编程问答-------------------- 是的
TextBox tb=GridView1.FindControl(id) as TextBox;
if(tb!=null)
{
string text=tb.Text;
} --------------------编程问答-------------------- 用个比较不给力的方法,给gridview的主div加上一个div_onclick("<%#id%>")事件,onclick事件传入的参数为image的id,再<script>var i=0 function div_conclick(a){var b=document.getElementById(a); if(i%2==0) b.src="图片地址1"; else b.scr="图片地址2"; i=i+1;} --------------------编程问答-------------------- Request.Form取值
findcontrol --------------------编程问答-------------------- 上面的几种方法我都试了,不可以,动态生成出来的id用这种方法就获取不到了,总是报未将对象引用到实例 --------------------编程问答-------------------- 你把div 设成runat=“server”,你再看看打开网页再看页面代码,你会发现ID的规律的 --------------------编程问答-------------------- for(int i =0 ;i<gridView1.rows.Count;i++)
{
TextBox tbx1 =(TextBox) GridView1.FindControl(id);
//这里写逻辑
} --------------------编程问答-------------------- 上一篇错了
for(int i =0 ;i<gridView1.rows.Count;i++)
{
TextBox tbx1 =(TextBox) GridView1.Rows[i].FindControl(id);
//这里写逻辑
} --------------------编程问答-------------------- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//e.Row.Cells[0].Text = ((TStudent)e.Row.DataItem).Id.ToString();
//e.Row.Cells[1].Text = ((TStudent)e.Row.DataItem).Name.ToString();
// e.Row.Cells[2].Text = ((TStudent)e.Row.DataItem).Age.ToString();
TextBox txt1 = e.Row.FindControl("txtID") as TextBox;
}
} --------------------编程问答-------------------- protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[3].Text = Convert.ToDateTime(e.Row.Cells[3].Text).ToShortDateString();
}
}
e.Row.RowType 是指当前行的类型
DataControlRowType 是GridView的行的类型集合 其中的DataRow是数据绑定行
这个判断语句的意思就是判断当前行是不是数据绑定行
是绑定时候用来过滤标题行和序号行等等非数据绑定行的
其中的3只是随机写的,真实的应该是你要查询的那个textBox所在的列号
--------------------编程问答-------------------- http://download.csdn.net/source/1795477
这里有例子 --------------------编程问答-------------------- http://download.csdn.net/source/1795477
这个 --------------------编程问答-------------------- 如果生成的textbox放入PlaceHolder控件里,直接用ID可以获取
如果直接放在form,用Request[name]取值 --------------------编程问答-------------------- int id = Convert.ToInt32(((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text);
试试看,cells[0]这个根据位置而定 --------------------编程问答-------------------- 都是在这里说嘴,人家是动态生成的TextBox,然后把TextBox里面的数据修改了以后,要在后台更新数据库的。
因为是动态生成的TextBox,所以每次更新时,都很重新加载生成TextBox的函数部分。
TextBox里面的数值还是最开始初始化的值。得不到更新后的 --------------------编程问答-------------------- ((TextBox)(GridView1.Rows[e.RowIndex].Cells[0].Controls[0])).Text --------------------编程问答-------------------- findcontrol --------------------编程问答-------------------- 如果是后台更新数据库后的数据,就应该在提交texbox的更新后的值的时候刷新GridView重新绑定啊。
要不然计算机怎么判断,即使后台取到值了没重新绑定当然没法判断新ID了 --------------------编程问答--------------------
说的有道理,把数据加个for循环就行了
补充:.NET技术 , ASP.NET