我在Repeater控件中的Footertemplate中进行插入操作,但是获取不到Footertemplate中控件的值(即控件Text="")
代码如下:
TextBox Txt_Title = this.Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("txtTitle1") as TextBox;
            TextBox Txt_Director = this.Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("txtDirector1") as TextBox;
            CheckBox chkInTheaters = this.Repeater1.Controls[this.Repeater1.Controls.Count - 1].FindControl("chkInTheaters1") as CheckBox;
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            string sql = " insert  into Movies( Title,Director,InTheaters) values( @Title,@Director,@InTheaters)";
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlParameter[] param = {
                              new SqlParameter("@Title",Txt_Title.Text),
                              new SqlParameter("@Director",Txt_Director.Text),
                              new SqlParameter("@InTheaters",chkInTheaters.Checked),
                              };
            cmd.Parameters.AddRange(param);
            int result = cmd.ExecuteNonQuery();
            conn.Close();    就执行上面的代码,可以进行插入操作,但是都没有获取到TextBox中Text的相应的值。插入的都是空值(断点调试时Txt_Title.Text=""  Txt_Director.Text=""  可是相应的文本框中我输入值了。 )什么原因啊???

解决方案 »

  1.   

    得把TEXTBOX放到<ItemTemplate>标签内,这样就能获取到值了
      

  2.   

    <%@ Page Language="C#" EnableViewState="true" Debug="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                System.Data.DataSet ds = new System.Data.DataSet();
                System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
                System.Data.DataRow dr;
                dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
                dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));
                dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] };            for (int i = 0; i < 8; i++)
                {
                    dr = dataTable1.NewRow();
                    dr[0] = i;
                    dr[1] = "【孟子E章】" + i.ToString();
                    dataTable1.Rows.Add(dr);
                }
                Repeater1.DataSource = dataTable1;
                Repeater1.DataBind();
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            TextBox TextBox1 = Repeater1.Controls[Repeater1.Controls.Count - 1].Controls[0].FindControl("TextBox1") as TextBox;
            Response.Write(TextBox1.Text);    }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                测试<br />
            </ItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            </FooterTemplate>
        </asp:Repeater>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        </form>
    </body>
    </html>
      

  3.   


    获取方法是没错绑定是在IsPostback中吗?
      

  4.   

    你拷贝上面的代码直接保存成xx。aspx看效果