none
update panel ve TextChanged RRS feed

  • Soru

  • Dostlar merhaba


    bir çok sitede verilen örneklerde kullanılan update panel ve TextChanged bende bir türlü çalışmıyor nedenini anlayamıdım.

    farkılı bir yerde kullanacağım ama boş sayfada bile çalışmıyor.

    Amacım form üzerinde txtsearch isimli textbox ın text i değiştiğinde sadece txtsearch in postback ini çalıştırarak txtSearch_TextChanged event inde ki kodlamaları çalıştırabilmek. Normalde form içinde textbox da postback yapmaya çalıştığım için tüm form temizleniyor. Bu yüzden bu uygulamayı kullanmak istiyorum.

    Nerde yanlış yaptığım konusunda yardımlarınızı rica ederim.

    aspx tarafı

    <body>
    
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
            <asp:TextBox ID="txtSearch" runat="server" OnTextChanged="txtSearch_TextChanged"></asp:TextBox>
                    </ContentTemplate>
               
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="txtSearch" EventName="TextChanged" />
                </Triggers>
               
                </asp:UpdatePanel>
        </div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </form>
    </body>
    CS tarafı
     protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void txtSearch_TextChanged(object sender, EventArgs e)
        {
            TextBox1.Text = "HELLO";
        }


    16 Mart 2016 Çarşamba 13:23

Yanıtlar

  • ScriptManager yüzündendir. ScriptManager'i masterpage de form1 in hemen altına taşıyın. Ama, updatepanel en az 15-20 yıllık bir teknoloji. @Cihan hocamın dediklerini dikkate almanızda fayda var. jQuery ajax ile çok daha kolayca bu işler halledilebilir.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Mart 2016 Çarşamba 16:36
    Moderatör
  •  $(document).ready(function () {
                $('#' + '<%= txtSearch.ClientID %>').on('change', function () {
                   
    
                    __doPostBack('<%# txtSearch.ClientID %>', 'OnTextChanged')
                });
               
            });

    bu şekilde yapınca oldu teşekkür ederim
    • Yanıt Olarak İşaretleyen yduru 17 Mart 2016 Perşembe 13:11
    17 Mart 2016 Perşembe 13:11

Tüm Yanıtlar

  • WebForms'ta TextChanged winforms gibi çalışmaz. Siz yanlış anlamışsınız sanırım. Ayrıca TextBox1 de update panelin contenttemplate'i içinde kalmalı. Yukarıdaki durumda updatepanel içine bir button ekleyin, hiçbir event vermeyin, tıklayınca trigger tetiklenecek. 

    Yani textchanged olması için sunucuya bir defa gidip gelmesi gerekiyor.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Mart 2016 Çarşamba 13:51
    Moderatör
  • UpdatePanel den uzak durun -kötü bir şey o. Yapmak istediğiniz şeyi muhtemelen basit bir javascript koduyla halledebilirsiniz -söylemediğin için bilemiyoruz. En kötü javascriptini birazcık ajax'a bularsın.
    16 Mart 2016 Çarşamba 14:26
    Moderatör
  • UpdatePanel den uzak durun -kötü bir şey o. Yapmak istediğiniz şeyi muhtemelen basit bir javascript koduyla halledebilirsiniz -söylemediğin için bilemiyoruz. En kötü javascriptini birazcık ajax'a bularsın.
    yapmak istediğim 1. textbox a bilgi girince o bilgiye göre bazı hesaplamalar yapıp 2. textbox a veri göndermek. ama 1. textboxdaki veriyi silmeden ve tüm formu postback yapmadan. bunun için gerekli javascript ve ajax nasıl olabilir çünkü herkez update panelden bahsetmiş örnekler hep bunula ilgili. başka bilgiye ulaşamadım.
    16 Mart 2016 Çarşamba 14:53
  • WebForms'ta TextChanged winforms gibi çalışmaz. Siz yanlış anlamışsınız sanırım. Ayrıca TextBox1 de update panelin contenttemplate'i içinde kalmalı. Yukarıdaki durumda updatepanel içine bir button ekleyin, hiçbir event vermeyin, tıklayınca trigger tetiklenecek. 

    Yani textchanged olması için sunucuya bir defa gidip gelmesi gerekiyor.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    Yanıt için çok teşekkür ederim.

    Dediğiniz gibi Textbox1 i contenttemplate içine alınca oldu. Ancak aynı şeyi kendi uygulamam içine koyunca olmuyor. Kendi uygulamam masterpage altındaki ContentPlaceHolder içinde olduğu için mi böyle bir sorun yaşıyorum anlamadım. her şey bire bir aynı hatta yazım hatası yapmıyayım diye boş fordakileri alıp kendi sayfama kopyaladım ama olmadı. boş form da oluyor


    16 Mart 2016 Çarşamba 14:53
  • ScriptManager yüzündendir. ScriptManager'i masterpage de form1 in hemen altına taşıyın. Ama, updatepanel en az 15-20 yıllık bir teknoloji. @Cihan hocamın dediklerini dikkate almanızda fayda var. jQuery ajax ile çok daha kolayca bu işler halledilebilir.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    16 Mart 2016 Çarşamba 16:36
    Moderatör
  • ScriptManager yüzündendir. ScriptManager'i masterpage de form1 in hemen altına taşıyın. Ama, updatepanel en az 15-20 yıllık bir teknoloji. @Cihan hocamın dediklerini dikkate almanızda fayda var. jQuery ajax ile çok daha kolayca bu işler halledilebilir.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    Önay Bey

    Peki bana küçük bir örnekleme ile yardımcı olabilirmisiniz.

    ben böyle bir şey yaptım ama olmadı

            $(document).ready(function () {
                $("#txtSearch").on('change', function () {
                   
    
                    __doPostBack('<%# txtSearch.ClientID %>', 'OnTextChanged')
                });
               
            });

    17 Mart 2016 Perşembe 13:03
  •  $(document).ready(function () {
                $('#' + '<%= txtSearch.ClientID %>').on('change', function () {
                   
    
                    __doPostBack('<%# txtSearch.ClientID %>', 'OnTextChanged')
                });
               
            });

    bu şekilde yapınca oldu teşekkür ederim
    • Yanıt Olarak İşaretleyen yduru 17 Mart 2016 Perşembe 13:11
    17 Mart 2016 Perşembe 13:11