日期:2014-05-18  浏览次数:20478 次

GridView中的Input取值问题
小弟在一个GridView中有个Input,绑定的Sort字段,Int型,现在要求修改Input的值,然后提交,并排序,但是出问题了
protected void btnSort_Click(object sender, EventArgs e)
  {

  for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
  {
  CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("checkbox");
  TextBox text = (TextBox)GridView1.Rows[i].FindControl("sort");
  text = new TextBox();
  if (text.Text.ToString() != "")//现在这步为空,不知道怎么取值循环直接跳过了
  {
  if (cbox.Checked == true)
  {
  cc.Info_ID = int.Parse(GridView1.DataKeys[i].Value.ToString());
  cc.Sort = int.Parse(text.Text.Trim());
  companyInfoManage.SortCompanyInfo(cc);//调用的存储过程,修改Input的值
  }
  }
  }
  Response.Write("<script language=javascript>alert('修改成功!')</script>");
  SortBind();//排序并绑定

  }
请各位大大指教,昨天selad已经指教了,但还是不太懂

------解决方案--------------------
protected void btnSort_Click(object sender, EventArgs e) 


for (int i = 0; i <= GridView1.Rows.Count - 1; i++) 

CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("checkbox"); 
TextBox text = (TextBox)GridView1.Rows[i].FindControl("sort"); 
text = new TextBox(); //这句去掉 if (text.Text.ToString() != "")//现在这步为空,不知道怎么取值循环直接跳过了 

if (cbox.Checked == true) 

cc.Info_ID = int.Parse(GridView1.DataKeys[i].Value.ToString()); 
cc.Sort = int.Parse(text.Text.Trim()); 
companyInfoManage.SortCompanyInfo(cc);//调用的存储过程,修改Input的值 



Response.Write(" <script language=javascript>alert('修改成功!') </script>"); 
SortBind();//排序并绑定 



------解决方案--------------------
TextBox text = (TextBox)GridView1.Rows[i].FindControl("sort"); 
text = new TextBox(); 
你都已经new TextBox()了能不为空吗.应该把"text = new TextBox(); "去掉.
如果显示“未将对象引用设置到对象的实例”说明你"TextBox text = (TextBox)GridView1.Rows[i].FindControl("sort"); "这句没取到对象.你检查一下sort名字是否正确.

------解决方案--------------------
楼主textbox是服务器控件,你用的是input属于html控件
你试着这样做:
HtmlInputText hit = (HtmlInputText)GridView1.Rows[i].FindControl("sort"); 
看行不行
------解决方案--------------------
Request.Form["sort"] 取到的是 用 , 隔开的所有的sort值
你的这个排序还要用户先点checkbox 再输入具体的值 实在是麻烦。。