在tableview中单击相应的行时获取行数据

时间:2012-12-26 10:42:49

标签: javascript titanium titanium-mobile titanium-modules

我是钛的新手。我正在创建一个带有行的自定义表视图。我连续添加了4个视图。每个相应的视图都有标签--->>检查时间,检查时间,注意和时间。签入和签出为任务提供时间。注意是添加注释和时间以显示签入和签出时间的差异。我想根据当前的入住时间更新数据库中特定任务的注释。当特定的行点击时,我无法捕获当前登记时间标签上的文本。如果我得到检查时间,那么我将根据当前的入住时间更新数据库中的相应行。

这是我的代码。

功能设定(日期,时间,时间) {             var date1 = date;

        var section = Ti.UI.createTableViewSection();
         row1 = Ti.UI.createTableViewRow({layout:"horizontal"});


        inview=Ti.UI.createView({
               width:"25%",
        });

        inlabel=Ti.UI.createLabel({
             text:intime,
            font:{fontSize:13}

        });
        inview.add(inlabel);



        outview=Ti.UI.createView({
             width:"25%",

        });

        outlabel=Ti.UI.createLabel({
            text:outtime,
            font:{fontSize:13}
        });

        outview.add(outlabel);

        inview.addEventListener('click',function(e){


               // Ti.API.info(';',e.row1.rowID);                

                var picker=Ti.UI.createPicker();
                picker.showTimePickerDialog({

                    callback: function(e){

                          if(e.cancel)
                          {
                             Ti.API.info('user canceled dialog');
                          }
                          else{

                                Ti.API.info('user selected date'+e.value);

                               var d=new Date(e.value);                                     
                               var time=String.formatTime(d);                                            

                               var newintime=d.getTime();

                                Ti.API.info(':'+time);                

                             //   var total=calculatetime(newintime,currouttime);

                             //   timelabel.text=total;

                                inlabel.text=time;                                                                        
                               //updateintime(date1,inlabel.text);



                          }
                    }

                });

        });


        outview.addEventListener('click',function(e){

                var picker=Ti.UI.createPicker();
                picker.showTimePickerDialog({

                    callback: function(e){

                          if(e.cancel)
                          {
                             Ti.API.info('user canceled dialog');
                          }
                          else{

                                Ti.API.info('user selected date'+e.value);

                                 var d=new Date(e.value);
                                 var time=String.formatTime(d);

                                 var newoutime=d.getTime();

                                 Ti.API.info(''+newoutime);      

                              //     var total=calculatetime(currintime,newoutime);

                                // timelabel.text=total;                                

                                 outlabel.text=time;
                             //   updateoutime(date1,outlabel.text);

                          }
                    }

                });

        });



        var timeview=Ti.UI.createView({
              width:"25%",

        });


         var intime=parseInt(inlabel.text);
         var outime=parseInt(outlabel.text);

         var time=intime-outime;

        var timelabel=Ti.UI.createLabel({

              text:time,              
              font:{fontSize:13}
        });

        timeview.add(timelabel);



        var noteview=Ti.UI.createImageView({                
            image:'TaskNote.png',
            width:"15%",

        });             


        noteview.addEventListener('click',function(e){

                    var tasknotewindow=Ti.UI.createWindow({
                    backgroundColor:'white',
                    layout:'vertical',
                    url:'TimeTracker/tasknote.js'

                });

                tasknotewindow.starttime=e.inlabel.text;

                tasknotewindow.open();
        });                         

        var taskview=Ti.UI.createView({
            width:"25%",

        });

        tasklabel=Ti.UI.createLabel({
             text:"Click",
             font:{fontSize:13},

        });


        //create window for task management
        var taskmanagewindow = Ti.UI.createWindow({
                    backgroundColor: 'white', layout: 'vertical',
                    url:'TimeTracker/task.js'
        }); 


        //Task Dialog Box
        taskoptionBox=Ti.UI.createOptionDialog({                            
                title:'Task',
                options:arrtaskname,
                buttonNames:['Cancel'],                     
         });

         taskoptionBox.addEventListener('click',function(e){                
             tasklabel.text= arrtaskname[e.index];                   
         });


        tasklabel.addEventListener('click',function(e){                 
                taskoptionBox.show();               
        });


        taskview.add(tasklabel);

        row1.add(inview);
        row1.add(outview);
        row1.add(timeview);
        row1.add(noteview);
        row1.add(taskview);         

        section.add(row1);
        data.push(section);
        table.setData(data);

}

1 个答案:

答案 0 :(得分:1)

查看此问题/答案。也许你将能够用这个完成你的目标。我想你们都在尝试同样的事情。

How to find or trace child click in tableviewrow (Titanium Studio)

这就是我一直这样做的原因:

row1 = Ti.UI.createTableViewRow({
  layout:"horizontal",
  myval: intime // <=== Add your value here that you want to query for.
});
...
inlabel=Ti.UI.createLabel({
  text:intime,
  font:{fontSize:13}
});
inview.add(inlabel);
...

tableview.addEventListener('click', function(e){
  alert(e.rowData.myval);
});
...

// This section seems jumbled.  Should be something along the lines of the following...
// You have:
// section.add(row1);
// data.push(section);
// table.setData(data);
// Change to:
data.push(row1);
table.setData(data);
section.add(table);

最初,我认为你想根据你现在看来不同的评论来操纵行内的标签。