获取Datalist中控件值的问题(在线等,解决即结帖)~~~
在一个Datalist中绑定了几个控件~~
如下:
<asp:TextBox ID= "msgtit " runat= "server " "> </asp:TextBox>
<asp:HiddenField ID= "suser " Value= <%#Eval( "usersign ") %> runat= "server " />
<asp:TextBox ID= "msgbodyuse " runat= "server " TextMode= "MultiLine "ValidationGroup= "Button1 "> </asp:TextBox>
<asp:Button ID= "Button8 " runat= "server " OnClick= "Button8_Click " Text= "Button " ValidationGroup= "Button1 " />
在后台代码获取代码如下:
protected void Button8_Click(object sender, EventArgs e)
{
foreach (DataListItem d2 in DataList1.Items)
{
TextBox Rmsgtit = (TextBox)d2.FindControl( "msgtit ");
TextBox Rmsgbodyuse = (TextBox)d2.FindControl( "msgbodyuse ");
HiddenField Rsuser = (HiddenField)d2.FindControl( "suser ");
Response.Write(Rmsgtit.Text); //为什么我填了却还是空值?
Response.Write(Rmsgbosyuse.Text); //为什么我填了却还是空值?
}
}
如果 在控件中,比如 msgtit 加上默认值,就可以打印出来默认值,但是我在运行时如果修改默认值,则打印出来的还是默认值???
不知道有没有高手可以解决~~~
------解决方案--------------------因为你遍历的是DataList1.Items,也就是说你取的是DataList1的ItemTemplate里面的内容,当然不会出现EditItemTemplate中的内容
------解决方案--------------------确保首次绑定DataLIst代码放在 !IsPostBack 里面, 如下
if(!IsPostBack) {
MyDataList.DataSource = GetMyDataSource();
MyDataList.DataBind();
}
------解决方案--------------------先确保你是在Edit之后提交的,如果不是Edit模式下的,提交的都是初始化的值
如果不是以上问题,那么可能是楼上说的原因,在你PostBack回来之后,又初始化了一下,导致数据有恢复了, 呵呵
楼主努力找问题啊,估计简单一点,就看那个点了
------解决方案--------------------DataListItem 的类型判断了么?