首先我把button放在DataGrid里,然后这样写:
<asp:datagrid onitemdatabound="datagrid1_itemdatabound">
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{Button btn = (Button)e.Item.FindControl("Btn_OK");
btn.Click +=new System.EventHandler(Btn_OK_Click);}
protected void btn_ok_click(object Sender,eventargs e)
{
}
出错,错误原因忘了.然后我把button放在了DataGrid外
this.btn_ok+=new system.EventHandler(btn_ok_click);...
protected void btn_ok_click(object sender,eventargs e)
{
textbox title1=dg1.items[0].FindControl("Title");
}
错误原因:说是不是把Textbox转换成.....Control???
<asp:datagrid onitemdatabound="datagrid1_itemdatabound">
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{Button btn = (Button)e.Item.FindControl("Btn_OK");
btn.Click +=new System.EventHandler(Btn_OK_Click);}
protected void btn_ok_click(object Sender,eventargs e)
{
}
出错,错误原因忘了.然后我把button放在了DataGrid外
this.btn_ok+=new system.EventHandler(btn_ok_click);...
protected void btn_ok_click(object sender,eventargs e)
{
textbox title1=dg1.items[0].FindControl("Title");
}
错误原因:说是不是把Textbox转换成.....Control???
解决方案 »
- TataTable和Table能相互转换吗?
- 我的FLASH播放不了。
- 为什么CssStyleCollection ,提示未定义构造函数!!!!!
- 关于上传图片失败的问题?????
- sqlserver的问题,占用内存逐渐升高,大家帮帮忙
- 请教!!!
- 我想把*.cs的文件编译成dll的动态链接库,请问我该如何做呢?
- [请教思归等高手]如何使用程序访问到 ASP.NET 的 DataGrid 的分页的数据?
- 重新换了IP后只能访问HTML等静态页面,ASPX这些页面进去就报错
- 请问一个在ASP。NET中使用XML的问题,小弟花了一个下午也搞不定,有了答案一定给分
- 哪里有下载网站的代码,我需要该网站实现留言、bbs的功能!谢谢
- asp.net中制作框架网页 怎样在框架整体刷新的情况下 子框架里面的页面仍然保持状态?
需要进行强制转换btn.Click +=new System.EventHandler(Btn_OK_Click);
,委托好象不能在这里写,,可以在dg里指定button的commandname,然后,在DG的itemcommand里写事件,,比如把button的commandname 设为btn privat itemcommand(){
if(e.commandname="btn")
{
语句
}
没有环境,呵呵
这样可以,button要使用模板列,名字固定为Title,
==================
===========
==============
==========
============
=======
1、注意大小写
2、FindControl后要类型转换,并且要检查是不是null
3、放在datagrid里面的button可以靠ItemCommand事件,不需要自己+委托
1、注意大小写
2、FindControl后要类型转换,并且要检查是不是null
3、放在datagrid里面的button可以靠ItemCommand事件,不需要自己+委托======
哈。同意这位兄弟的观点。
======================================
======================================
======================================
======================================
======================================
<asp:DataGrid ID ="DG_Edit" runat ="server" AutoGenerateColumns ="false" Border="0">
<Columns >
<asp:TemplateColumn >
<ItemTemplate >
<table class ="Style.css">
<tr>
<td>编辑</td>
</tr>
<tr>
<td>标题:<asp:TextBox ID ="Title" runat ="server" /></td> <tr><td><asp:Button ID ="Btn_OK" runat ="server" Text ="修改" />td></tr>
</table>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>=======
protected void Btn_OK_Click(object Sender, System.EventArgs e)
{
TextBox Title1 = (TextBox)DG_Edit.Items[0].FindControl("Title");
Response.Write(Request ["Title1"].Trim ().ToString ());
}
出错:
System.NullReferenceException: 未将对象引用设置到对象的实例。我要实现修改信息这个功能!
是什么意思?
是不是要把Title1 的信息显示出来
TextBox Title1 = (TextBox)e,Items.FindControl("Title");
你出错的原因是第一行根本没有这个控件,我想你需要得到button那个行的文本框的text吧,如果你坚持这么做可以这么改:
Button btn= (Button)(sender);
DataGridItem dgi=(DataGridItem)(btn.Parent.Parent);
TextBox Title1 = (TextBox)dgi.FindControl("Title");
Response.Write(Title1.Text.Trim().ToString ());
如果:Title1.text.trim()能取出值,是以前文本框的值,根本不是我改过的值
只可能出现在显示模式或交互模式下的。if (列的模式 == 显示模式 || 列的模式 == 交互模式)
{}
你把方法绑定到每一个Button上,创建了一大堆不必要的委托……而DataGrid的ItemCommand事件则是依赖于事件冒泡的……
==============================
=
===============================
====================================================================
如果用Title1.text.trim()可以提取出文本框的值而且不会出错,但不会提取我修改候文本框的值。
如:我的文本框有个123
我把他改成1234
用Title1.text.trim()提取的值是123而不是我要的1234
如果不是这样的话,你点击按钮导致postback-》导致重新绑定