2016-03-03 8 views
0

Итак, у меня есть ретранслятор, который печатает имена категорий из базы данных, у каждой из этих имен категорий есть под ним TextBox и кнопка, чтобы я мог редактировать ее имя. Если бы я хотел, но ... да, всегда есть один, но. Я просто не могу достичь TextBox, который повторяется, он говорит мне, что TextBox_Update не существует в текущем контексте.Как попасть в TextBox, который находится внутри репитера?

protected void Button1_Click(object sender, EventArgs e) 
{ 

    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString())) 
    { 
     SqlCommand cmd = new SqlCommand(); 

     cmd.Connection = conn; 
     cmd.CommandText = @"UPDATE [categories] SET [category_name] = @category_name WHERE [category_id] = @category_id"; 
     cmd.Parameters.AddWithValue("@category_name", TextBox1.Text); 
     cmd.Parameters.AddWithValue("@category_id", Request["id"]); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 
    } 
    Response.Redirect("default.aspx"); 

} 

Это способ, которым я пытался обновить его, но ... мне подсказывает, что textbox не существует вообще.

Вот как это выглядит в HTML

<asp:Repeater ID="Repeater_Categories" runat="server" > 
    <HeaderTemplate> 

     <div class="insertPost"> 
      <h1>Categories</h1> 
      <hr /> 
    </HeaderTemplate> 
    <ItemTemplate> 
      <div class="category"> 
       <h3><%# Eval("category_name") %></h3> 
       <div class="categoryEdit"> 
        <asp:TextBox ID="TextBox1" runat="server"  ValidationGroup="3"></asp:TextBox> 

        <br /> 
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" ValidationGroup="3" /> 
        <a href="?action=delete&id=<%# Eval("category_id") %>">Del</a> 
        <br /> 
       </div> 
      </div> 
    </ItemTemplate> 
    <FooterTemplate> 
</div> 
    </FooterTemplate> 
</asp:Repeater> 

Возможно делать что-то ужасно неправильно, я desperated за помощью; <

@Edit

Фиксированные имена TextBox ..

+1

Вы googled в течение 2 часов? В самом деле? Тонны ответов [https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=find%20textbox%20in%20repeater%20c%23). –

+0

Возможный дубликат [Доступ к текстовым полям в режиме ретранслятора] (http://stackoverflow.com/questions/2484806/accessing-textboxes-in-repeater-control) – JosephStyons

ответ

0

Вы должны искать TextBox, чтобы получить ссылку, а затем использовать эту ссылку, чтобы обновить свои свойства.

TextBox txt1 = Repeater_Categories.FindControls("TextBox1") as TextBox;