日期:2014-05-18  浏览次数:20413 次

获取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 的类型判断了么?