C# razor select2 禁用

C# razor select2 disable

如果 option.AgentName 中有值,是否可以将此 select2 设置为禁用只读?我已经添加了 selectElement.select2 方法,有什么我可以添加到回调中的吗?

Is this the correct way to do this? using self.entry.Agent.AgentName != ""?

查看

<div class="form-group sentence-part-container sentence-part ng-scope ui-draggable sentence-part-entry-agent sentence-part-with-select2-single" [class.has-errors]="entry.IsInvalid && entry.IsTouched">
   <div class="sentence-part-values">
       <div class="sentence-part-values-select2-single">
           <select class="form-control" style="width: 300px" [(ngModel)]="entry.Agent.VersionKey">
               <option *ngFor="let option of agents" [value]="option.VersionKey">{{option.AgentName}}</option>
           </select>
       </div>
   </div>
</div>

ts 文件

$selectElement.select2({
   initSelection: function(element, callback) {
   console.log(self.entry.Agent.AgentName);
   if (self.entry.Agent.AgentName != "")
   {
      console.log('disabled');
      $selectElement.prop('disabled', true);
   }
       callback({ id: self.entry.Agent.VersionKey, text: self.entry.Agent.AgentName });
   },
   placeholder: "Select an agent"
})
.on("change", (e) => {
   self.ngZone.run(() => {
       self.entry.Agent.VersionKey = $selectElement.val();
       self.entry.AgentVersionKey = self.entry.Agent.VersionKey;

       let regimenEntryAgent = this.getRegimenEntryAgentByVersionKey(self.entry.Agent.VersionKey);
       if (regimenEntryAgent) {
           self.entry.Agent.AgentId = regimenEntryAgent.AgentId;
       }

       self.onSentenceChange(null);                    
   });
})
.on("select2:close", () => {
   self.entry.IsTouched = true;
   this.validate();
});    

您可以尝试在 Select2newData.push() 方法中应用一些逻辑。

ajax: {
    url: '/DemoController/DemoAction',
    dataType: 'json',
    delay: 250,
    data: function (params) {
        return {
            query: params.term, //search term
            page: params.page
        };
    },
    processResults: function (data, page) {
        var newData = [];
        $.each(data, function (index, item) {

            // apply some logic to the corresponding item here
            if(item.AgentName == "x"){

            }
            newData.push({
                    //id part present in data 
                    id: item.Id,     
                    //string to be displayed
                    text: item.AgentName 
            });
        });
        return { results: newData };
    },
    cache: true
},


更新: 建议您在初始化 Select2 时通过传入一个对象来声明您的配置选项。但是,您也可以使用 HTML5 data-* attributes 定义您的配置选项。

对于其他 Select2 选项,请查看 Options