2013-01-31 43 views
0

我想爲我的ForigenKey列而不是數值顯示文本。有很多示例通過比較ID來檢索TextMember,但它們不適用於我的案例。我剛開始使用劍道UI所以不要很瞭解劍道網格。如何在Grid的單元格中顯示dataTextField而不是dataValueField?

下面是代碼:

$(document).ready(function() { 

dataSource1 = new kendo.data.DataSource({ 

     transport: { 
       read: { 
       url: "Data/AttendanceCode/GridSelect.php", 
       dataType: "json", 

          }, 

       update: { 
        url: "Data/AttendanceCode/GridUpdate.php", 
     dataType: "json", 
         type:"GET" 
      }, 

        destroy: { 
        url: "Data/AttendanceCode/GridDelete.php", 
         dataType: "json", 
      type:"POST" 
          }, 

        create: { 
         url: "Data/AttendanceCode/GridInsert.php", 
         dataType: "json", 
       type:"POST" 
          }, 

         }, 

        schema: { 
     data: "data", 

         model: { 
          id: "AttendenceID", 

          fields: { 
           AttendenceID : { editable: false, nullable: true }, 
           TeacherID: { field: "TeacherID", defaultValue: "EIIT0002" }, 
           } 
          } 
         }, 


        }); 



$("#grid").kendoGrid({ 
      dataSource: dataSource1, 

    pageSize: 10, 
      pageable: { 
       refresh: true, 
       pageSizes: true 
        }, 
        editable:{ mode : "popup" }, 
        height: 400, 
     filterable: true, 
        columnMenu: true, 
     sortable: true, 
        reorderable: true, 
        resizable: true, 
        toolbar: ["create"], 

        columns: [ 
         { field:"AttendenceID", title: "Attendence ID", width:"130px" }, 

         { field: "TeacherID", title:"Teacher", width: "100px" , editor: TeacherDropDownEditor, template: "#=getTeacherName(TeacherID)#" }, 

        { command: ["edit", "destroy"], title: "Action", width: "210px" }], 

       }); 


      }); 

教師下拉數據源

teacher = new kendo.data.DataSource({ 

     transport: { 
     read: { 
    url : "Data/Teacher.php", 
    dataType: "json" } 
       }, 

    schema: { 
    data : "Teacher" 
     } 

    }); 

//教師主編

function TeacherDropDownEditor(container, options) { 
    $('<input data-bind="value:' + options.field + '"/>') 
.appendTo(container) 
    .kendoDropDownList({   
    dataTextField: "TeacherName", 
dataValueField: "Service_NO", 
dataSource: teacher 
    }); 
} 

我發現並試圖獲得教師姓名的不同方法

1 -

function getTeacherName(value) { 

      var text = ""; 
    $.each(teacher, function() { 
      if (this.Service_NO == value) { 
      text = this.Name; 
      return false; 
      } 
     }); 
    return text; 
         } 

2 -

function getTeacherName(teacherID) { 

for (var idx = 0, length = teacher.length; idx < length; idx++) 
    { 
    if (teacher[idx].Service_NO === teacherID) 
     {t = teacher[idx].Name;} 
    }     
return t; 
    } 

3 -

function getTeacherName(teacherID) { 
     $.each(teacher, function(key, val) { 
     if(val.Service_NO == tID){ 
      t = val.Name; 
      } 
      }); 
      return t; 
      } 

好像數據源(教師)不具有任何值。 PHP代碼運行完美。 如果您對我的代碼有什麼疑問,請幫助。

謝謝!

+0

代碼工作。謝謝OnaBai ... :-) –

回答

0

您是對的,teacher DataSource沒有任何數據,因爲您正在定義如何獲取數據(這是您對DataSource的處理),但您沒有閱讀它。

地址:

teacher.read(); 

手動強制讀取數據。

注:這是發生的事情神奇當你有一個網格,ListView控件,...因爲這些小部件爲您但這一次做到這一點,顯示網格需要,因爲閱讀它提前它是從一個JavaScript函數中調用的(KendoUI網格代碼不知道你在函數getTeacherName中有什麼名字)。

0

,你應該配置你的領域:

{ field: "nu_status", title: 'Status', values: [ { text: "Active", value: 1 }, { text: "Inactive", value: 0 }]}, 
相關問題