将动态创建的网格视图列设为只读
本文关键字:只读 视图 网格 动态 创建 | 更新日期: 2023-09-27 18:33:23
var a = from employee in entities.Employees
from ticket in employee.EmployeeTicket
select new {ID=employee.ID,Name=employee.Name,TicketNo=ticket.TicketNo,
Subject=ticket.Subject,Date=ticket.Date,State=ticket.State.Name};//Columns
GridViewTicketHistory.DataSource = a;//Datasource is Linq to entity
GridViewTicketHistory.DataBind();
网格视图具有 Linq 到实体数据源。我想使那些动态创建的列(ID,名称,票号,主题,日期,状态)只读。我尝试使用列索引 GridViewTicketHistory.Columns[2] 强制转换为行数据绑定事件中的数据绑定,然后将其设置为只读。但是,索引超出了范围,这意味着它看不到具有该索引的任何列。有没有办法选择特定的列并将其设为只读。如果我需要使用数据表,如何为 linq to 实体执行此操作?
<asp:BoundField DataField="ID" HeaderText="ID"/>
<asp:BoundField DataField="Name" HeaderText="Name"/>
<asp:BoundField DataField="TicketNo" HeaderText="TicketNo"/>
<asp:BoundField DataField=" Subject" HeaderText="Subject"/>
<asp:BoundField DataField="Date" HeaderText="Date"/>
<asp:BoundField DataField="StateName" HeaderText="StateName"/>
不要给出像 ID=employee.ID 这样的名称。因此
select new {ID=employee.ID,Name=employee.Name,TicketNo=ticket.TicketNo,
Subject=ticket.Subject,Date=ticket.Date,State=ticket.State.Name};
成为;
select new{employee.ID,employee.Name,ticket.TicketNo,ticket.Subject,
ticket.Date,ticket.State.StateName};
如果最后一个变量相同,它也不会编译..员工。名称和 ticket.State.Name 重命名数据库中的表列并重新创建实体模型。我做到了,并将外键列更改为 StateName。现在您可以将数据绑定字段列设置为只读。 ((BoundField)GridView1.Columns[0]).ReadOnly = true;
使 ID 列只读...