2013-01-31 42 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 }]}, 
相关问题