asp.net-mvc - C# razor select2 禁用

标签 asp.net-mvc razor jquery-select2

如果 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 .

关于asp.net-mvc - C# razor select2 禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61349715/

相关文章:

asp.net-mvc - asp-validation-summary 显示自定义错误但不显示模型错误

c# - 如何在asp.net mvc中从同一个api Controller 调用多个GET方法?

asp.net-mvc - Viewbag.Title 错误 : One or more types required to compile a dynamic expression cannot be found. 您是否缺少引用?

asp.net - .net MVC 将 linq 数据从 Controller 传递到 View

javascript - 如何在 select2 上调用 "if no search result"?

javascript - 在 Select2 MultiSelect 下拉列表中添加自定义标签样式

c# - .NET MVC 自定义路由

c# - 获取日期时间的日期部分

javascript - 在 jquery 中使用 ViewModel 中的项目

javascript - 具有多选选项框选项的动态表单