Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UniDBGrid HTML OnClick
#1
Merhaba
UniDBGrid içerisine (Ado ile) DB den çektiğim verileri getiriyorum. En sağ kolona da üzerinde EKLE olan bir image koydum. 
ClientEvents/ExtEvents
Ext.data.Store.Load   daki kodlar ile kolonları HTML olarak gösteriyorum.


       '<tr>'+       
        '<td>'+
          '<img src="B2B_Simge/EkleBtn.svg" type="image" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
           'onClick="javascript:uAnaMenu.EkleBtnClick({0});"'+
         '/>'+
        '</td>'+


buradaki onClick olayını yakalayamıyorum. Nasıl yakalarım? 

İyi Çalışmalar 
Cevapla
#2
Allah kolaylık versin. Unigui için destek almak çooook zor. 3 gündür bir sorunla uğraşıyorum. Henüz çözüm bulabilmiş değilim.
Cevapla
#3
Merhaba , Client tarafında bir JavaScript etkileşimiyle sunucu tarafında işlem yapabilmek için UniGUI hazır olarak "AjaxCall" yapılarını sunuyor , bunun için bilgisayarınızda UniGUI kurulumuyla gelen Demo lar içinde ClientEvents-2 klasöründeki örneği incelerseniz bu konuda ki tüm mantığı anlarsınız.
iyi çalışmalar.
Cevapla
#4
(20-10-2022, Saat: 09:09)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba , Client tarafında bir JavaScript etkileşimiyle sunucu tarafında işlem yapabilmek için UniGUI hazır olarak "AjaxCall"  yapılarını sunuyor , bunun için bilgisayarınızda UniGUI kurulumuyla gelen Demo lar içinde ClientEvents-2  klasöründeki örneği incelerseniz bu konuda ki tüm mantığı anlarsınız.
iyi çalışmalar.

Merhaba
O örnekleri inceledim. Orada bir nesne (UiPanel1) var ve nesne ajax olayları tetikliyor.
Ekrana getiridiğim alanları gridde listeliyorum, fakat DBGrid kolonlarının visible özelliğini false yapıyorum. Ekrana kolonları HML kodu ile farklı bir şekilde alan değerlerini alarak gösteriyorum. Kolon bilgileri HTML kodu ile oluştuğu için HTMLdeki onClick olayını yakalamam lazım. 
veya oluyorsa HTML kodu içerisinde ajax kodunu tetikleyen birşeyler ekleyebilirmiyim?

İyi Çalışmalar
Cevapla
#5
(21-10-2022, Saat: 10:00)m_ekici Adlı Kullanıcıdan Alıntı:
(20-10-2022, Saat: 09:09)vkamadan Adlı Kullanıcıdan Alıntı: Merhaba , Client tarafında bir JavaScript etkileşimiyle sunucu tarafında işlem yapabilmek için UniGUI hazır olarak "AjaxCall"  yapılarını sunuyor , bunun için bilgisayarınızda UniGUI kurulumuyla gelen Demo lar içinde ClientEvents-2  klasöründeki örneği incelerseniz bu konuda ki tüm mantığı anlarsınız.
iyi çalışmalar.

Merhaba
O örnekleri inceledim. Orada bir nesne (UiPanel1) var ve nesne ajax olayları tetikliyor.
Ekrana getiridiğim alanları gridde listeliyorum, fakat DBGrid kolonlarının visible özelliğini false yapıyorum. Ekrana kolonları HML kodu ile farklı bir şekilde alan değerlerini alarak gösteriyorum. Kolon bilgileri HTML kodu ile oluştuğu için HTMLdeki onClick olayını yakalamam lazım. 
veya oluyorsa HTML kodu içerisinde ajax kodunu tetikleyen birşeyler ekleyebilirmiyim?

İyi Çalışmalar
Merhaba  , Aslında olayın felsefesi AjaxRequest in ilk parametresinde hangi unigui bileşeninin "OnAjaxEvent" inin tetikleneceğini beliryor olmanızdan geçiyor.
http://forums.unigui.com/index.php?/topi...hyperlink/     mesela buradaki örnekte  TUniHTMLEditor  üzerinden nasıl yapıldığını göstermiş, sizde bir UniDBGrid olduğuna göre eklediğim lilnkteki Ajax çağırısı JS kodunu aşağıdakine benzer şekilde düzenlemelisiniz.

GridHucresiString := '<a href="javascript:window.parent.ajaxRequest(window.parent.'+UniDBGrid1.JSName+', ''hrefClick'', [''hrefId=hrefId1''])">test</a>';

Ajax çağrısının kontrol edeceğini event bu durumda UniDBGrid1.OnAjaxEvent   olmuş olacak kontrol isteği karşılayacak kodunuzu oraya yazacaksınız.

iyi çalışmalar.
Cevapla
#6
(21-10-2022, Saat: 10:10)vkamadan Adlı Kullanıcıdan Alıntı:
(21-10-2022, Saat: 10:00)m_ekici Adlı Kullanıcıdan Alıntı: Merhaba
O örnekleri inceledim. Orada bir nesne (UiPanel1) var ve nesne ajax olayları tetikliyor.
Ekrana getiridiğim alanları gridde listeliyorum, fakat DBGrid kolonlarının visible özelliğini false yapıyorum. Ekrana kolonları HML kodu ile farklı bir şekilde alan değerlerini alarak gösteriyorum. Kolon bilgileri HTML kodu ile oluştuğu için HTMLdeki onClick olayını yakalamam lazım. 
veya oluyorsa HTML kodu içerisinde ajax kodunu tetikleyen birşeyler ekleyebilirmiyim?

İyi Çalışmalar
Merhaba  , Aslında olayın felsefesi AjaxRequest in ilk parametresinde hangi unigui bileşeninin "OnAjaxEvent" inin tetikleneceğini beliryor olmanızdan geçiyor.
http://forums.unigui.com/index.php?/topi...hyperlink/     mesela buradaki örnekte  TUniHTMLEditor  üzerinden nasıl yapıldığını göstermiş, sizde bir UniDBGrid olduğuna göre eklediğim lilnkteki Ajax çağırısı JS kodunu aşağıdakine benzer şekilde düzenlemelisiniz.

GridHucresiString := '<a href="javascript:window.parent.ajaxRequest(window.parent.'+UniDBGrid1.JSName+', ''hrefClick'', [''hrefId=hrefId1''])">test</a>';

Ajax çağrısının kontrol edeceğini event bu durumda UniDBGrid1.OnAjaxEvent   olmuş olacak kontrol isteği karşılayacak kodunuzu oraya yazacaksınız.

iyi çalışmalar.

Teşekkür ederim,

Gridle ilgili HTML kodu UniDbGrid'in ClientEvents, ExtEvents, [store].load bölümünde yazıyorum. Burada tek tırnağı bu şekilde kullandığımda missing ) after argument list hatası veriyor. (çift tırnakta hata vermiyor fakat çalışmıyor (herhangi bir parametre gelmiyor).

ajaxRequest ClientEvents, ExtEvents, [store].load da nasıl tetiklerim?
Cevapla
#7
burada örnek kod paylşırsanız kodunuzun üstünden fikir yürütelim.
Cevapla
#8
(21-10-2022, Saat: 15:10)vkamadan Adlı Kullanıcıdan Alıntı: burada örnek kod paylşırsanız kodunuzun üstünden fikir yürütelim.

UndiDbGrid in ClientEvents, ExtEvents, [store].load bölümündeki kod;

function store.load(sender, records, successful, operation, eOpts)
{
 var tpl=new Ext.XTemplate(
  '<div class="dvContainer">'+
   '<table style="width:100%;border-collapse:collapse; height:100%;">'+
    '<tr>'+
     '<td style="width:85px;text-align:center;vertical-align:middle;">'+
      '<img src="{[this.getProductImage(values)]}" style="width:50px;height:50px;margin:auto;"/>'+
     '</td>'+
     

   
     '<td style="width:50px;">'+
     '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
      '<tr>'+      
     '<td background="{[this.getKampanyaImage(values)]}"; background-repeat:no-repeat; style="width:85px; text-align:center;vertical-align:middle;">'+                  
      '<br>'+
     '</td>'+      
      '</tr>'+      
     '</table>'+      
     '</td>'+
           
     '<td style="width:50px; font-weight: bold; color: #00008B;  font-size: 16px; ">'+
      '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
       '<tr>'+
        '<td background="{[this.getNakIskImage(values)]}"; background-repeat:no-repeat; style="width:85px; text-align:center;vertical-align:middle;">'+
         '{15}'+
        '</td>'+        
       '</tr>'+
      '</table>'+      
     '</td>'+

     '<td style="width:80px;">'+
     '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
      '<tr>'+      
       '<td>'+

         '<a href="javascript:window.parent.ajaxRequest(sender, "hrefClick", ["hrefId=hrefId1"])">'+
         '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
        '/>'+
       
        '<input type="button" id="btn1" name="btn1" value="ClickMe" onclick="callServer(this,"onclick")"><br>'+
       
        '</a>'+
                   
       '</td>'+      
      '</tr>'+      
     '</table>'+      
     '</td>'+
     
    '</tr>'+
   '</table>'+        
  '</div>',
  {
  getProductImage: function(values){    
    return 'Resim/Urun/'+values[3]+'.jpg';    
   },
   getKampanyaImage: function(values){    
    return 'Simge/'+values[11];    
   },
   getNakIskImage: function(values){    
    return 'Simge/'+values[14];    
   },    
   getMiktar:function(values){
    return Ext.util.Format.number(parseFloat(values[6]), '0,000');      
   },
   getFiyat:function(values){
    return Ext.util.Format.number(parseFloat(values[7]), '0,000.00 ₺');      
   },
   getNetFiyat:function(values){
    return Ext.util.Format.number(parseFloat(values[12]), '0,000.00 ₺');      
   },
   getInsFiy:function(values){
    return Ext.util.Format.number(parseFloat(values[13]), '0,000.00 ₺');      
   }                            
  }  
 );
 
 Ext.defer(function(){
 sender.grid.setColumns([
   {
     text: '',
     dataIndex: '0',
     flex:1,      
     xtype: 'templatecolumn',
     tpl: tpl
   }
 ]);
 
 sender.grid.getColumns()[0].show();
}, 500);
 
}

Simge/EkleBtn olduğu bölümü 2-3 farklı şekilde yazdım. fakat olmadı. 


  '<a href="javascript:window.parent.ajaxRequest(sender, "hrefClick", ["hrefId=hrefId1"])">'+
         '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
        '/>'+       
        '<input type="button" id="btn1" name="btn1" value="ClickMe" onclick="callServer(this,"onclick")"><br>'+      
        '</a>'+

  '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
           'onClick="javascript:uAnaMenu.UrunGrid.btn1Click({0});"'+


procedure TuAnaMenu.UrunGridAjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
// UrunGrid.ClientEvents.ExtEvents.Values[]

UniMemo2.Lines.Add(params.Text);
// if EventName = 'select' then
//    ShowMessage(Params.Values['hrefId']);
end;
Cevapla
#9
(21-10-2022, Saat: 16:42)m_ekici Adlı Kullanıcıdan Alıntı:
(21-10-2022, Saat: 15:10)vkamadan Adlı Kullanıcıdan Alıntı: burada örnek kod paylşırsanız kodunuzun üstünden fikir yürütelim.

UndiDbGrid in ClientEvents, ExtEvents, [store].load bölümündeki kod;

function store.load(sender, records, successful, operation, eOpts)
{
 var tpl=new Ext.XTemplate(
  '<div class="dvContainer">'+
   '<table style="width:100%;border-collapse:collapse; height:100%;">'+
    '<tr>'+
     '<td style="width:85px;text-align:center;vertical-align:middle;">'+
      '<img src="{[this.getProductImage(values)]}" style="width:50px;height:50px;margin:auto;"/>'+
     '</td>'+
     

   
     '<td style="width:50px;">'+
     '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
      '<tr>'+      
     '<td background="{[this.getKampanyaImage(values)]}"; background-repeat:no-repeat; style="width:85px; text-align:center;vertical-align:middle;">'+                  
      '<br>'+
     '</td>'+      
      '</tr>'+      
     '</table>'+      
     '</td>'+
           
     '<td style="width:50px; font-weight: bold; color: #00008B;  font-size: 16px; ">'+
      '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
       '<tr>'+
        '<td background="{[this.getNakIskImage(values)]}"; background-repeat:no-repeat; style="width:85px; text-align:center;vertical-align:middle;">'+
         '{15}'+
        '</td>'+        
       '</tr>'+
      '</table>'+      
     '</td>'+

     '<td style="width:80px;">'+
     '<table style="width:100%;border-collapse:collapse;height:50px;text-align:center;">'+
      '<tr>'+      
       '<td>'+

         '<a href="javascript:window.parent.ajaxRequest(sender, "hrefClick", ["hrefId=hrefId1"])">'+
         '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
        '/>'+
       
        '<input type="button" id="btn1" name="btn1" value="ClickMe" onclick="callServer(this,"onclick")"><br>'+
       
        '</a>'+
                   
       '</td>'+      
      '</tr>'+      
     '</table>'+      
     '</td>'+
     
    '</tr>'+
   '</table>'+        
  '</div>',
  {
  getProductImage: function(values){    
    return 'Resim/Urun/'+values[3]+'.jpg';    
   },
   getKampanyaImage: function(values){    
    return 'Simge/'+values[11];    
   },
   getNakIskImage: function(values){    
    return 'Simge/'+values[14];    
   },    
   getMiktar:function(values){
    return Ext.util.Format.number(parseFloat(values[6]), '0,000');      
   },
   getFiyat:function(values){
    return Ext.util.Format.number(parseFloat(values[7]), '0,000.00 ₺');      
   },
   getNetFiyat:function(values){
    return Ext.util.Format.number(parseFloat(values[12]), '0,000.00 ₺');      
   },
   getInsFiy:function(values){
    return Ext.util.Format.number(parseFloat(values[13]), '0,000.00 ₺');      
   }                            
  }  
 );
 
 Ext.defer(function(){
 sender.grid.setColumns([
   {
     text: '',
     dataIndex: '0',
     flex:1,      
     xtype: 'templatecolumn',
     tpl: tpl
   }
 ]);
 
 sender.grid.getColumns()[0].show();
}, 500);
 
}

Simge/EkleBtn olduğu bölümü 2-3 farklı şekilde yazdım. fakat olmadı. 


  '<a href="javascript:window.parent.ajaxRequest(sender, "hrefClick", ["hrefId=hrefId1"])">'+
         '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
        '/>'+       
        '<input type="button" id="btn1" name="btn1" value="ClickMe" onclick="callServer(this,"onclick")"><br>'+      
        '</a>'+

  '<img src="Simge/EkleBtn.svg" style="width:50px;height:50px;margin:auto;cursor:pointer;" '+
           'onClick="javascript:uAnaMenu.UrunGrid.btn1Click({0});"'+


procedure TuAnaMenu.UrunGridAjaxEvent(Sender: TComponent; EventName: string;
  Params: TUniStrings);
begin
// UrunGrid.ClientEvents.ExtEvents.Values[]

UniMemo2.Lines.Add(params.Text);
// if EventName = 'select' then
//    ShowMessage(Params.Values['hrefId']);
end;
Merhaba , 
<a href="javascript:window.parent.ajaxRequest(sender, "hrefClick", ["hrefId=hrefId1"])">
bu bölümü aşağıdaki gibi değiştirip denermisiniz.
<a href="javascript:window.parent.ajaxRequest(uAnaMenu.UrunGrid, "hrefClick", ["hrefId=hrefId1"])">

Eğer sonuç alamaz iseniz, "UrunGrid" isimli nesnenizin JSName  ini elde edin forma bir butona showmessage(UrunGrid.JSNAme)  diyerek deneme amaçlı elde edin genellikle "O" ile başlayan bir Js name oluyor mesela O112  olsun kodu aşağıdaki gibi deneyin ;

<a href="javascript:window.parent.ajaxRequest(window.parent.O112, "hrefClick", ["hrefId=hrefId1"])">
Cevapla
#10
Malesef olmadı.  Gridin JSName OCF olarak geldi, denedim olmaıd. Parametrede ODA geldi, onu da denedim o da olmadı.

EventName :select

olarak geliyor.  hrefClick gelmiyor.

Resme tıkladığımdaki params.Text ;
Ajax=1
IsEvent=1
Obj=ODA
Evt=select
This=ODA
rr=5
cc=0
_S_ID=fcJg8zSrJj10B5C6CFB
_fp_=%26OD6%3D%25021%2502%2502%25035%25030%2503%255B5%255D%2503
_seq_=e
_uo_=O74

**** EventName :select

Demoların içinde (html2ajax) HTML frame içerisini scrip ile fonksiyon yazılmış. 

<script>
   function callServer(elmnt, event) {
       var HTMLFrame = Ext.getCmp("_HTMLFrame"); 
       var params=[];
       
       switch (elmnt.type) {
           case "text":
           case "password":
               params = ["id="+elmnt.id, "val="+elmnt.value, "xevent="+event ];
               break;
           case "button":
               params = ["id="+elmnt.id, "val="+elmnt.value, "xevent="+event ];
               break;
           case "checkbox":
               params = ["id="+elmnt.id, "val="+elmnt.value, "checked="+elmnt.checked, "xevent="+event ];
               break;
       };
       
       if (params.length>0) {
           ajaxRequest(HTMLFrame, 'callserver', params);
       }
   }
</script>
<input type="text" id="txt1" name="txt1" onblur="callServer(this,'onblur')"><br>
<input type="password" id="psw1" name="psw1" onblur="callServer(this,'onblur')"><br>
<br>

<input type="checkbox" id="chBox1" name="chBox1" value="1" onclick="callServer(this,'onclick')">
<label for="chBox1">CheckBox1</label><br>
<br>

<input type="button" id="btn1" name="btn1" value="ClickMe" onclick="callServer(this,'onclick')"><br>
<br>
<br>

buradaki callServer scriptini nasıl kullanırım. (scrip kodunu nerye yazarım?)
bu kod muhtemelen işimiz çözer. ama script kodu html kodun üst kısmına yazdığımda yine çalışmadı. ( 'callserver') tek tırnak problemi galiba.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  TMS Web Core - Kod tarafından HTML Etkileşimi Örneği rmzgenius 4 1.427 16-03-2022, Saat: 10:39
Son Yorum: rmzgenius
  html de kullanınal özel karakterler powerghost 9 3.119 27-04-2021, Saat: 00:32
Son Yorum: powerghost
  html içinde php kodu kullanmak while,for döngüsü[php sorusu] 41linea41 3 4.295 12-07-2019, Saat: 21:46
Son Yorum: hi_selamlar
  Html den bilgi almak. zihnidede 5 4.353 09-07-2019, Saat: 15:37
Son Yorum: zihnidede
  [ÇÖZÜLDÜ] UniDBGrid Sınırlı Veri Getirme Sorunu..!! keceonurr 4 3.866 12-12-2018, Saat: 16:43
Son Yorum: keceonurr



Konuyu Okuyanlar: 1 Ziyaretçi