关于DataList的问题,欢迎高手指点,高分!!!!!!!!!! "lb"这个控件在什么地方?"tb"这个控件在什么地方?你上面并没有列出来不能实现是什么是抛处异常还是没有反应? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lb和tb是在ItemTemplate里面还是在EditTemplate里面? 楼上的朋友,代码里有啊,在编辑项目摸板里,我把它单独贴出来拉<EditItemTemplate><%#DataBinder.Eval(Container.DataItem,"name")%><asp:LinkButton ID="edit_btn" Text="编辑状态" CommandName="edit" runat="server" /><asp:LinkButton ID="cancel_btn" Text="取消编辑" CommandName="cancel" runat="server" /><br/><asp:TextBox ID="tb" runat="server" /><asp:Button ID="update_btn" CommandName="update" Text="确定编辑" runat="server" /><br/><asp:Label ID="lb" runat="server" /></EditItemTemplate>点了确定编辑后没反映,也不报错,还请你帮我看看,谢谢拉。 其实,看你的程序,好像已经更改了DataList也好,DataGrid也好当你没有点击【编辑】的时候,编辑列里面的控件是没有生成的拿你的例子而言,就是tb,lb是没有生成的点击了【编辑】按钮,指定了Grid/List的EditIndex页面PostBack,根据你指定第几行为编辑行,生成对应的编辑模板里面的控件然后发向客户端。保存之后,指定EditIndex = -1重新绑定数据又把编辑模板里面的控件给去掉了如此而已就是说,编辑模板里面的控件的生命周期是很短的。 楼上的朋友,那么我的这个问题怎么解决了?也就是说我要取到tb中的值,同时也想生成lb。再次感谢! 现在我把lb放到DataList外面去了,还是取不到tb的值,到底DataList的编辑功能怎么用啊? 而且我还用全局变量过度了一下,把tb的值先给变量,然后在给lb还是不行,哪位高人帮帮我啊。 你这个TB没有帮定啊?<asp:TextBox ID="tb" runat="server" />你这是一个空的tb 你TB,LB初始化不是你的数据?你加入IsPost判断,如果你在页面page_load时候帮定了,赋予的值会被覆盖的! ----------------------------------------------------------------------------------- brightheroes(闭关|那一剑的风情) ( ) 信誉:103 2004-10-28 20:56:00 得分: 0 你这个TB没有帮定啊?<asp:TextBox ID="tb" runat="server" />你这是一个空的tb-----------------------------------------------------------------------------------非常感谢你耐心的回答,谢谢!请问如何绑定,而且我在void DL_update(Object O,DataListCommandEventArgs E)这段程序里加上了if(!IsPostBack)你最好把[Page_Load],[编辑],[取消编辑]和[确定]这几个程序写出来我看看好吗?我只剩下20分拉,我全加上拉! 如何绑定,你可以直接修改你的<asp:TextBox ID="tb" runat="server" Text = '<%# (DataBinder.Eval(Container, "DataItem.你的字段名称%>'/>这样就可以了其次,你要注意Page_Load里面if(!Page.IsPostBack){ //绑定你的数据} 给你推荐一个例子http://dotnet.aspx.cc/ShowDetail.aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4 我晕,你的意思是说,你输入数据之后得不到值?对吧那么,你的Page_Load里面数据绑定的语句要如下:Page_Load(){ if(!Page.IsPostBack) { yourDataGrid.DataSource = 获取数据; yourDataGrid.DataBind(); }}如果没有 if(!Page.IsPostBack)这个条件输入的值会因为页面PostBack,重新读取数据库,从而丢失的 邮件已经发了,请收,谢拉!如果不能正常接收我给给地址你下载:http://www.optometry.cn/DataList_Edit.rar 我看了你的代码你是这样写的public static SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=;DataBase=data");void Page_Load(Object O,EventArgs E){ if(!Page.IsPostBack) { conn.Open(); SqlCommand cmd=new SqlCommand("select id,name,price,address,quan,imageid,imagename from product where id<>1000",conn); SqlDataReader sdr=cmd.ExecuteReader(); pro.DataSource=sdr; pro.DataBind(); conn.Close(); }}void pro_Edit(Object O,DataListCommandEventArgs E){ pro.EditItemIndex=E.Item.ItemIndex; Page_Load(O,E);}void pro_Cancel(Object O,DataListCommandEventArgs E){ pro.EditItemIndex=-1; Page_Load(O,E);}void pro_Update(Object O,DataListCommandEventArgs E){ ((Label)E.Item.FindControl("edit_lb")).Text=((TextBox)E.Item.FindControl("tb")).Text; lb.Text=((TextBox)E.Item.FindControl("tb")).Text; pro.EditItemIndex=-1; Page_Load(O,E); } 你是在里面重新调用的 Page_Load(O,E),这是不对的,因为你要重新绑定数据而已。不需要执行Page_Load,Page_Load里面是有条件的。建议修改如下:private void BindGrid(){ conn.Open(); SqlCommand cmd=new SqlCommand("select id,name,price,address,quan,imageid,imagename from product where id<>1000",conn); SqlDataReader sdr=cmd.ExecuteReader(); pro.DataSource=sdr; pro.DataBind(); conn.Close();}void Page_Load(Object O,EventArgs E){ if(!Page.IsPostBack) { BindGrid(); }}void pro_Edit(Object O,DataListCommandEventArgs E){ pro.EditItemIndex=E.Item.ItemIndex;BindGrid();}void pro_Cancel(Object O,DataListCommandEventArgs E){ pro.EditItemIndex=-1;BindGrid();}void pro_Update(Object O,DataListCommandEventArgs E){ ((Label)E.Item.FindControl("edit_lb")).Text=((TextBox)E.Item.FindControl("tb")).Text; lb.Text=((TextBox)E.Item.FindControl("tb")).Text; pro.EditItemIndex=-1;BindGrid(); } 求思路:获取一系列满足条件的“Type” C# 将循环多图clone部分图合成一张图 clone时内存不足 数据库插入如何指定自增列值? 项目赶着纳期 希望哥们儿们拉一把啊!! 难道这里没有高手吗? 隐藏控件!!! 救急,请问如何获取cpu的温度? 相当急 动态加载TreeNode问题! 求获取字符串内的数字 请教高手一个VS.Net2003的安装配置方面的问题! 请问,怎样将自己的功能模块集成到IE的ToolBar上,旧象QQ,Flashget,一样在上面有自己的图标,点饥后实现自己的功能 求救!oracle 中通过c#语句更新数据库不能实现的问题 这么为WEB服务创建数据库
在ItemTemplate里面还是在EditTemplate里面?
<%#DataBinder.Eval(Container.DataItem,"name")%><asp:LinkButton ID="edit_btn" Text="编辑状态" CommandName="edit" runat="server" />
<asp:LinkButton ID="cancel_btn" Text="取消编辑" CommandName="cancel" runat="server" /><br/><asp:TextBox ID="tb" runat="server" /><asp:Button ID="update_btn" CommandName="update" Text="确定编辑" runat="server" /><br/><asp:Label ID="lb" runat="server" />
</EditItemTemplate>
点了确定编辑后没反映,也不报错,还请你帮我看看,谢谢拉。
当你没有点击【编辑】的时候,编辑列里面的控件是没有生成的
拿你的例子而言,就是tb,lb是没有生成的点击了【编辑】按钮,指定了Grid/List的EditIndex
页面PostBack,根据你指定第几行为编辑行,生成对应的编辑模板里面的控件
然后发向客户端。保存之后,指定EditIndex = -1
重新绑定数据
又把编辑模板里面的控件给去掉了如此而已
就是说,编辑模板里面的控件的生命周期是很短的。
<asp:TextBox ID="tb" runat="server" />
你这是一个空的tb
你加入IsPost判断,如果你在页面page_load时候帮定了,赋予的值会被覆盖的!
你这个TB没有帮定啊?
<asp:TextBox ID="tb" runat="server" />
你这是一个空的tb-----------------------------------------------------------------------------------非常感谢你耐心的回答,谢谢!请问如何绑定,而且我在void DL_update(Object O,DataListCommandEventArgs E)这段程序里加上了
if(!IsPostBack)你最好把[Page_Load],[编辑],[取消编辑]和[确定]这几个程序写出来我看看好吗?我只剩下20分拉,我全加上拉!
<asp:TextBox ID="tb" runat="server" Text = '<%# (DataBinder.Eval(Container, "DataItem.你的字段名称%>'/>这样就可以了
其次,你要注意Page_Load里面if(!Page.IsPostBack)
{
//绑定你的数据
}
http://dotnet.aspx.cc/ShowDetail.aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4
那么,你的Page_Load里面数据绑定的语句
要如下:Page_Load()
{
if(!Page.IsPostBack)
{
yourDataGrid.DataSource = 获取数据;
yourDataGrid.DataBind();
}
}如果没有 if(!Page.IsPostBack)这个条件
输入的值会因为页面PostBack,重新读取数据库,从而丢失的
你是这样写的
public static SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=;DataBase=data");
void Page_Load(Object O,EventArgs E)
{
if(!Page.IsPostBack)
{
conn.Open();
SqlCommand cmd=new SqlCommand("select id,name,price,address,quan,imageid,imagename from product where id<>1000",conn);
SqlDataReader sdr=cmd.ExecuteReader();
pro.DataSource=sdr;
pro.DataBind();
conn.Close();
}
}void pro_Edit(Object O,DataListCommandEventArgs E)
{
pro.EditItemIndex=E.Item.ItemIndex;
Page_Load(O,E);
}void pro_Cancel(Object O,DataListCommandEventArgs E)
{
pro.EditItemIndex=-1;
Page_Load(O,E);
}void pro_Update(Object O,DataListCommandEventArgs E)
{
((Label)E.Item.FindControl("edit_lb")).Text=((TextBox)E.Item.FindControl("tb")).Text;
lb.Text=((TextBox)E.Item.FindControl("tb")).Text;
pro.EditItemIndex=-1;
Page_Load(O,E);
}
不需要执行Page_Load,Page_Load里面是有条件的。
建议修改如下:private void BindGrid()
{
conn.Open();
SqlCommand cmd=new SqlCommand("select id,name,price,address,quan,imageid,imagename from product where id<>1000",conn);
SqlDataReader sdr=cmd.ExecuteReader();
pro.DataSource=sdr;
pro.DataBind();
conn.Close();}void Page_Load(Object O,EventArgs E)
{
if(!Page.IsPostBack)
{
BindGrid();
}
}
void pro_Edit(Object O,DataListCommandEventArgs E)
{
pro.EditItemIndex=E.Item.ItemIndex;
BindGrid();
}void pro_Cancel(Object O,DataListCommandEventArgs E)
{
pro.EditItemIndex=-1;
BindGrid();
}void pro_Update(Object O,DataListCommandEventArgs E)
{
((Label)E.Item.FindControl("edit_lb")).Text=((TextBox)E.Item.FindControl("tb")).Text;
lb.Text=((TextBox)E.Item.FindControl("tb")).Text;
pro.EditItemIndex=-1;
BindGrid();
}