【问题标题】:Making dynamically created Gridview columns read only使动态创建的 Gridview 列只读
【发布时间】:2014-12-05 10:28:59
【问题描述】:
 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();

Gridview 有 Linq to entity 数据源。 我想让那些动态创建的列(ID,Name,TicketNo,Subject,Date,State)只读..我尝试使用列索引 GridViewTicketHistory.Columns[ 2] 在 rowdatabound 事件中进行数据绑定,然后使其只读。但是索引超出范围,这意味着它看不到具有该索引的任何列。有没有办法选择特定列并使其 只读。如果我需要使用数据表,我该如何为 linq to entity 做呢?

【问题讨论】:

  • 需要使用 a.ToList() 吗?

标签: c# asp.net gridview entity-framework-5


【解决方案1】:
   <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 .Thus 之类的名称

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};

如果最后一个变量相同,它也不会编译..employee.Name 和 ticket.State.Name 重命名数据库中的表列并重新创建实体模型。我做到了,并将外键列更改为 StateName。现在你可以让你的databoundfield 列只读。 ((BoundField)GridView1.Columns[0]).ReadOnly = true; 将 ID 列设为只读...

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 2014-09-14
    • 1970-01-01
    • 2015-08-19
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多