首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在telerik Grid中隐藏列,但需要获取它

在telerik Grid中隐藏列,但需要获取它
EN

Stack Overflow用户
提问于 2010-09-01 21:34:54
回答 2查看 3.2K关注 0票数 0

假设我有一个订单和订单详细信息。

该视图将包含订单字段,以及用于显示详细信息的Telerik Grid

我总是在会话中维护订单的引用。

代码语言:javascript
代码运行次数:0
运行
复制
Session["Order"] = order;

当用户向网格添加订单详细信息时,我将其保存在订单引用中。

代码语言:javascript
代码运行次数:0
运行
复制
public ActionResult Grid_AddDetail(OrderDetail orderDetail)  {
(Session["order"] as Order).Details.Add(orderDetail);    
}  

问题是,当我需要更新行时,我如何确定订单详细信息中的哪些详细信息已更新?

代码语言:javascript
代码运行次数:0
运行
复制
public ActionResult Grid_UpdateDetail(OrderDetail orderDetail)  {
///how will i compare the element in the details, with the orderDetail?        
(Session["order"] as Order).Details.IndexOf(orderDetail) = orderDetail;
}  

这个问题可以通过添加一个序列号列来解决,并将传入的详细信息与我的引用中的现有值进行比较,方法是覆盖等于:

代码语言:javascript
代码运行次数:0
运行
复制
public overrid Equal(object obj){
return (obj as OrderDetail).Serial == this.Serial;
}

但是我希望序列号列是不可见的,但如果我这样做了,它将不会显示在传入的详细信息中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-02 21:14:03

我所做的是:

添加了一个名为Serial的列

将列宽设置为0。

代码语言:javascript
代码运行次数:0
运行
复制
columns.Bound(m => m.Serial).Title("").Sortable(false).Width(0);

它将在(insert,update)中显示,但delete中的问题是使他(如Brett所说)成为Datakey。

代码语言:javascript
代码运行次数:0
运行
复制
public ActionResult Grid_AddDetail(OrderDetail orderDetail)  {
  if ((Session["order"] as Order).Details.Count != 0)
     item.Serial= (Session["order"] as Order).Details.Max(d => d.Serial) + 1;
  (Session["order"] as Order).Details.Add(orderDetail);    
 } 

public ActionResult Grid_UpdateDetail(OrderDetail orderDetail)  {
///order detail now contains the serial number.  
(Session["order"] as Order).Details.IndexOf(orderDetail) = orderDetail;
} 
票数 0
EN

Stack Overflow用户

发布于 2010-09-01 21:39:40

如果您只是想让该列不可见,我认为这会有所帮助:

代码语言:javascript
代码运行次数:0
运行
复制
AutoGenerateColumns="false"

这将迫使您生成显示信息的列,而不是自动为您创建它们的网格视图。因此,现在您需要执行以下操作才能显示订单

代码语言:javascript
代码运行次数:0
运行
复制
<asp:TemplateField>
      <ItemTemplate>
           <b><%# DataBinder.Eval(Container.DataItem, "Order") %>:</b>
      </ItemTemplate>
</asp:TemplateField>

编辑:

要在序列号不可见时访问它,您需要使用DataKeys:

代码语言:javascript
代码运行次数:0
运行
复制
orderDetail.DataKeyNames = new string[] { "Serial" };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3618607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档