I have a situation where certain users should be able to view data in a grid, but not be able to edit it. It looks like there are ways to disable individual elements of the grid, but is there a way to make it entirely readonly?
[edit: of course as soon as I finished typing this a co-worker made a suggestion that works. Simply putting the grid in a div with the class k-state-disabled does the trick]
I have grid, which has a boolean column, I want after page loading, to show only records with true value of the boolean column. I'm using row filtering, and I also want to show filter controls for this column activated on true value. I turned off server operations.
Hello,
I am letting users to upload a pdf file on the browser. Once the user upload the file, I want to give them the option to view the uploaded file. In order to upload the file, I am using ASP.NET Core Upload Asynchronous Upload control and it works fine, but I am not sure how can I have the user view the pdf file as soon as it uploads. The files exists on server. Below is my entire code:
@using Kendo.Mvc.UI
<div style="margin-top:60px">
<div>
<span style="font-size:20px; font-weight:bold">Upload File</span>
</div>
<br /> <br />
<div class="block-section">
@(Html.Kendo().Upload()
.Name("files")
.Async(a => a
.Save("Async_Save", "Block")
.Remove("Async_Remove", "Block")
.AutoUpload(true)
)
)
</div>
below is my controller code:
public async Task<IActionResult> Async_Save(IEnumerable<IFormFile> files)
{
foreach (var file in files)
{
var fileContent = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
var fileName = Path.GetFileName(fileContent.FileName.ToString().Trim('"'));
var physicalPath = Path.Combine(_webHostEnvironment.WebRootPath, "UploadedFiles", fileName);
using (var fileStream = new FileStream(physicalPath, FileMode.Create))
{
await file.CopyToAsync(fileStream);
}
}
return Content("");
}
The file that is uploaded by the user using the above control, I want the user to see that file. I know Telerik has pdfViewer, but I am not sure how the pdfViewer can show the file that exists on the server. The files is uploaded and saved on a folder in wwwRoot. i dont know the name of the file. Below is what I am trying to use:
<div>
@(Html.Kendo().PDFViewer().Name("pdfviewer")
.PdfjsProcessing(pdf => pdf.File(Url.Content("~/wwwroot/UploadedFiles/2020-0598857.pdf")))
.Height(1200)
)
</div>
Hello,
where can I find the controller code for ASP.NET Core Upload Asynchronous Upload. Somehow when I trying to upload my file, I keep getting an error "failed to upload the file". below is what i have in my controller:
public ActionResult Async_Save(IEnumerable<IFormFile> files)
{
// The Name of the Upload component is "files"
string path = Path.Combine(_webHostEnvironment.WebRootPath, "FileSavePath");
string DestinationPath = _configuration["DestinationPath"].ToString();
if (files != null)
{
MoveFiles mf = new MoveFiles();
foreach (var formFile in files)
{
using (var stream = System.IO.File.Create(DestinationPath))
{
formFile.CopyTo(stream);
}
}
}
This is my cshtml code:
any help will be apprecaited.
@using Kendo.Mvc.UI
<div style="margin-top:60px">
<div class="block-section">
@(Html.Kendo().Upload()
.Name("files")
.Async(a => a
.Save("Async_Save", "Upload")
.Remove("Async_Remove", "Upload")
.AutoUpload(true)
)
)
</div>
</div>
The form throws this exception when a User has Department. View with form:
@model DMDPace.DataAccess.DomainModels.User;
@(Html.Kendo().Form<User>()
.Name("User")
.HtmlAttributes(new { action = "/Directory/User_Update", method = "POST" })
.Layout("grid")
.Grid(g => g.Cols(12).Gutter(20))
.Items(i =>
{
i.Add().Field(e => e.DepartmentId).Label("Отдел").Editor(e => e.DropDownList()
.DataTextField("Name")
.DataValueField("Id")
.DataSource(s =>
{
s.Read(r => r.Action("GetDepartments", "Home"));
}));
}))
When I comment form code, it runs without errors.
User:
public class User : Entity
{
public int? DepartmentId { get; set; }
public Department Department { get; set; }
}
Department:
public class Department : Entity
{
public virtual List<User> Users { get; set; }
}
Startup:
services.AddControllers().AddNewtonsoftJson(options =>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
Endpoint which returns view:
[HttpGet("[controller]/User/{Id:int}")]
public async Task<IActionResult> UserView(int id)
{
var entity = await _userObjectService.GetAll()
.Include(e => e.Department)
.Where(e => e.Id == id)
.FirstOrDefaultAsync();
return View("User", entity);
}
Telerik version - 2022.1.301.
I have a dropdown editor in the partial view:
@(Html.Kendo().DropDownListFor(m => m.DepartmentId)
.DataTextField("Name")
.DataValueField("Id")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetDepartments", "Home");
});
})
)
Which I use in grid by specifying partial view's file name:
.EditorTemplateName("Department")
I have reached my wits end trying to figure out why my Kendo UI ListView will not display the data when using a very simple template. The ListView is based on a IEnumerable Model. I'm very frustrated at this point. No errors in f12. The template just does not display. Checking in debugger the data is all there and the model passed back as Json to the view is populated. I have triple checked the field names match in the template and model.
Update: One more bit of info...even if the template is a simple thing like this it STILL does not show:
<script type="text/x-kendo-tmpl" id="template">
Relevant View Code:
<script id="templateTest" type="text/x-kendo-tmpl">
<div>Accounts:</div>
<div class="product-view k-widget">
<dl>
<dt>Bank Name</dt>
<dd>#:BankName#</dd>
</dl>
</div>
</script>
@(Html.Kendo().ListView<PayrollAccountModel>()
.Name("listViewTest")
.AutoBind(false)
.TagName("div")
.ClientTemplateId("templateTest")
//.ClientTemplateHandler("templateTest")
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id("Id"))
.Create(create => create.Action("PayrollAccount_Create", "DirectDeposit"))
.Read(read => read.Action("PayrollAccount_Read", "DirectDeposit"))
.Update(update => update.Action("PayrollAccount_Update", "DirectDeposit"))
.Destroy(destroy => destroy.Action("PayrollAccount_Destroy", "DirectDeposit"))
)
.Editable().Deferred()
)
Relevant Controller Code:
DirectDepositController:
public ActionResult PayrollAccount_Read([DataSourceRequest] DataSourceRequest request)
Any help would be hugely appreciated!
Thanks
Hello i am using Oracle Database and have a model called CableView Model that i pass to grid and CableInfoID is my intended id for the grid. I have issues updating grid data as always it returning 0 instead of a value.What am i doing wrong?
grid code
@(
public class CableViewModel
{
[ScaffoldColumn(false) ]
public int CableInfoID { get; set; }
[Required]
[DisplayName("Cable ID")]
public string CableId { get; set; }
[Required]
[DisplayName("Switch Name")]
public string SwitchName { get; set; }
[Required]
[DisplayName("Port")]
public string Port { get; set; }
[ScaffoldColumn(false)]
public string ToolID { get; set; }
//public int ?ToolRecID { get; set; }
[ScaffoldColumn(false)]
public int ToolRecID { get; set; }
[UIHint("_AdminEmp")]
[Required]
[DisplayName("Technician Assigned")]
public string TechnicianAssigned { get; set; }
[DisplayName("Available IP")]
public string AvailableIp { get; set; }
[DisplayName("Subnet Mask")]
public string SubnetMask { get; set; }
[DisplayName("Gateway")]
public string Gateway { get; set; }
public string Comments { get; set; }
}
i have update method as follows ..please ignore other fields as i am returning from view or grid..
Everytime i try to update the grid row the CableInfoID is 0
public ActionResult Cables_Update([DataSourceRequest] DataSourceRequest request, CableViewModel product, int ToolRecID, string toolID, string Empltext)
{
if (ModelState.IsValid && product != null)
{
// Create a new Product entity and set its properties from the posted ProductViewModel.
var entity = new DiIpmsCableTeamCableInfo
{
RecordId = product.CableInfoID,
CableId = product.CableId,
SwitchName = product.SwitchName,
Port = product.Port,
TechnicianAssigned = Empltext,
ToolId = product.ToolID,
ToolRecId = ToolRecID,
AvailableIp=product.AvailableIp,
SubnetMask=product.SubnetMask
};
// Attach the entity.
_db.DiIpmsCableTeamCableInfos.Attach(entity);
// Change its state to Modified so Entity Framework can update the existing product instead of creating a new one.
_db.Entry(entity).State = EntityState.Modified;
// Or use ObjectStateManager if using a previous version of Entity Framework.
// northwind.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
// Update the entity in the database.
_db.SaveChanges();
}
// Return the updated product. Also return any validation errors.
return Json(new[] { product }.ToDataSourceResult(request, ModelState));
}
In the grid update method