兄弟们,下述代码为什么出现这样的提示!!!

xinhua198 2004-08-31 11:46:47
我用的全是DataGrid的模板列绑定数据:

public void DataGrid1_ItemCommand(object sender,DataGridCommandEventArgs e)
{
if(e.CommandName=="Edit")//使当前选中记录变为可编辑状态
{
DataGrid1.EditItemIndex=(int)e.Item.ItemIndex;
BindData();
TextBox tb1=(TextBox)e.Item.FindControl("TextBox1");
tb1.Enabled=false;
}
}


出现下述错误提示信息:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 99: BindData();
行 100: TextBox tb1=(TextBox)e.Item.FindControl("TextBox1");
行 101: tb1.Enabled=false;(红色显示)
行 102: }
行 103: else if(e.CommandName=="Update")//更新当前编辑的数据

...全文
94 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinhua198 2004-09-01
  • 打赏
  • 举报
回复
问题找出来了,LinkButton(编辑)处在ItemTemplate中,而TextBox1处在EditItemTemplate中,所有没有取出来!!
那么如何才能把EditItemTemplate中的TextBox1取出来呢?
谢了!!!
xinhua198 2004-09-01
  • 打赏
  • 举报
回复
问题找出来了,LinkButton(编辑)处在ItemTemplate中,而TextBox1处在EditItemTemplate中,所有没有取出来!!
那么如何才能把EditItemTemplate中的TextBox1取出来呢?
谢了!!!
Dugu_Niu 2004-09-01
  • 打赏
  • 举报
回复
确定TextBox1在当前列中?
调试一下看看e是哪一列

btw://我这儿现在没有.net 环境,刚重灌系统
xinhua198 2004-09-01
  • 打赏
  • 举报
回复
在DataGrid中用模板列绑数据,HTML部分代码如下:
<asp:TemplateColumn HeaderText="客户ID">
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
<HeaderTemplate>
<FONT face="宋体"></FONT>
</HeaderTemplate>
<ItemTemplate>
<FONT face="宋体">
<asp:Label id=Label1 runat="server" Width="88px" Text='<%# DataBinder.Eval(Container, "DataItem.CustomerID") %>'>
</asp:Label></FONT>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="TextBox6" runat="server" Font-Size="9pt" Font-Names="宋体" Width="96px" MaxLength="5"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id=TextBox1 runat="server" Font-Size="9pt" Font-Names="宋体" Width="96px" Text='<%# DataBinder.Eval(Container, "DataItem.CustomerID") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="公司名称">
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle"></HeaderStyle>
<HeaderTemplate>
<FONT face="宋体"></FONT>
</HeaderTemplate>
<ItemTemplate>
<asp:Label id=Label2 runat="server" Width="208px" Text='<%# DataBinder.Eval(Container, "DataItem.CompanyName") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="TextBox7" runat="server" Font-Size="9pt" Font-Names="宋体" Width="208px"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id=TextBox2 runat="server" Font-Size="9pt" Font-Names="宋体" Width="208px" Text='<%# DataBinder.Eval(Container, "DataItem.CompanyName") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
Dugu_Niu 2004-09-01
  • 打赏
  • 举报
回复
FindControl() 在MSDN中看看这个方法的的返回值,就明白为什么会返回null
Dugu_Niu 2004-09-01
  • 打赏
  • 举报
回复
TextBox tb1=(TextBox)e.Item.FindControl
你可以在这一句前设断点,看看 包含Controls中有哪些内容,如果没有你要得到的TextBox1控件,当然就返回null了,
至于为什么没有要问自己了,检查一下前面的代码
xinhua198 2004-09-01
  • 打赏
  • 举报
回复
确定!!!!
就是没有取到值!!这是为什么啊???
wangrenda 2004-09-01
  • 打赏
  • 举报
回复
确定ID是"Textbox1"?
xinhua198 2004-08-31
  • 打赏
  • 举报
回复
Dugu_Niu(有痔青年)
为什么取不到值,需是反回NULL呢????
Dugu_Niu 2004-08-31
  • 打赏
  • 举报
回复
TextBox tb1=(TextBox)e.Item.FindControl("TextBox1");
这一句,FindControl("Textbox1")返回了null
所以访问tb1.Enabled属性时提示 未将对象引用到实例

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧