前台在datagrid中:
<EditItemTemplate>
<table class="f1" width="100%" border="0" cellpadding="0" cellspacing="0" style="BORDER-COLLAPSE: collapse">
<tr>
<td width="33%">
<asp:TextBox Runat=server ID="kup" Text='<%# DataBinder.Eval(Container.DataItem,"kuproducts")%>'/>
</td>
<td width="33%">
<asp:TextBox ID="kut" Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"kutxm")%>'/></td>
<td width="33%">
<asp:TextBox ID="kum" Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"kumanufacturer")%>'/></td>
</tr>
</table>
</EditItemTemplate>点击后生成新的一行后台代码如下:
public void addnewrow(object sender,EventArgs e)
{
      addnewrows.Visible=true;
//点击新加一行生成行
DataSet ds=(DataSet)Session["mydata"];
DataTable dt=ds.Tables["d1"];
DataRow dr=dt.NewRow();
dt.Rows.Add(dr);
Session["mydata"]=ds;
int nnewitemindex=jxschange_allshoplist.Items.Count;
if(nnewitemindex>=jxschange_allshoplist.PageSize)
{
jxschange_allshoplist.CurrentPageIndex++;
nnewitemindex=0;
}
jxschange_allshoplist.EditItemIndex=nnewitemindex;
updateview();
}在button中点击代码如下.怎么不能把新加的那行的值找到?而是说未将对象引用设置到对象的实例。
:public void addnewrow_sure(object sender,System.EventArgs e)
{
foreach(DataGridItem oDataGridItem in jxschange_allshoplist.Items)
  {
TextBox kupp=(TextBox)oDataGridItem.FindControl("kup");
Response.Write("<script>alert('"+kupp.Text.ToString()+"');</script>");
TextBox kutt=(TextBox)oDataGridItem.FindControl("kut");
Response.Write("<script>alert('"+kutt.Text.ToString()+"');</script>");
TextBox kumm=(TextBox)oDataGridItem.FindControl("kum");
Response.Write("<script>alert('"+kumm.Text.ToString()+"');</script>");
}
}

解决方案 »

  1.   

    当然找不到,你点击按钮的时候根本没有那些textbox控件
      

  2.   

    那该怎么办?我要在datagrid中新加一行.并把它们的值能过button点击入库..
      

  3.   

    datagrid中.添加一新行后,datagrid变成编辑模式,所以有textbox
      

  4.   

    把数据用Session存在TAB里,点按钮取Session保存
      

  5.   

    保存到ViewState也可以,这个可能好些。。如果不知道ViewState怎么用,详看Sdk/Msdn
      

  6.   

    在button中点击代码
      public void addnewrow(object sender,EventArgs e)
    会有问题
    datagrid变成编辑模式,才有textbox如果点按钮刷新页面 datagrid就不是编辑模式了 所以找不到textbox
      

  7.   

    在ItemDataBound中的
     if(e.Item.ItemType==ListItemType.EditItem)
       {
     }
    中找
      

  8.   

    添加一新行后,datagrid变成编辑模式只要是编辑模式就能找到 所以想办法在按钮中代码执行前保证DataGrid为编辑模式即可
      

  9.   

    怎么样在按钮中代码执行前保证DataGrid为编辑模式呢??楼上的..
      

  10.   

    EditItemIndex=新加的那行的行号
      

  11.   

    因为编辑模式只有一行 所以你必须每行每行查找 不能一次性循环加上 EditItemIndex=新加的那行的行号   那行就为编辑行
    在addnewrow_sure 这个函数的前面你的思路是不对的不应该把TextBox放入EditItemTemplate中  因为这样只有在编辑时才能找到它