在一个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 加上默认值,就可以打印出来默认值,但是我在运行时如果修改默认值,则打印出来的还是默认值???不知道有没有高手可以解决~~~ 

解决方案 »

  1.   

    因为你遍历的是DataList1.Items,也就是说你取的是DataList1的ItemTemplate里面的内容,当然不会出现EditItemTemplate中的内容
      

  2.   

    确保首次绑定DataLIst代码放在 !IsPostBack 里面, 如下if(!IsPostBack) {
      MyDataList.DataSource = GetMyDataSource();
      MyDataList.DataBind();
    }
      

  3.   

    先确保你是在Edit之后提交的,如果不是Edit模式下的,提交的都是初始化的值如果不是以上问题,那么可能是楼上说的原因,在你PostBack回来之后,又初始化了一下,导致数据有恢复了, 呵呵楼主努力找问题啊,估计简单一点,就看那个点了
      

  4.   

    DataListItem 的类型判断了么?
      

  5.   

    ((TextBox)DataList1.Items[i].Controls[1]).Text
      

  6.   

    3楼
    先确保你是在Edit之后提交的,如果不是Edit模式下的,提交的都是初始化的值 
    能具体点吗?
        
     Protected Sub Repeater1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)
            Dim i As Integer = e.Item.ItemIndex
     
            Dim lad1 As LinkButton
            lad1 = e.Item.FindControl("Label1")
            Label1.Text = lad1.Enabled    End Sub
    会出现  “未将对象引用设置到对象的实例。”
    难道就是 初始化的值的 原因?