2010-09-09 12 views
8

Tôi đang sử dụng RadGrid từ Telerik với ba điều khiển LinkButton trong CommandItem và tôi muốn ẩn hoặc hiển thị chúng bằng cách sử dụng lệnh chuyển đổi ở mã phía sau.Cách tìm điều khiển trong CommandItemTemplate cho RadGrid

<CommandItemTemplate> 
    <LinkButton runat="server" ID="approveAllLink" Text="Approve All" > 
    </LinkButton> 
    <LinkButton runat="server" ID="approveLink" Text="Approve" > 
    </LinkButton> 
    <LinkButton runat="server" ID="rejectLink" Text="Reject" > 
    </LinkButton> 
</CommandItemTemplate> 

Vẫn giải quyết được trường hợp này?

+0

Tại sao một cộng đồng wiki? –

Trả lời

13

Điều này thì sao?

GridItem cmdItem = RadGrid1.MasterTableView.GetItems(GridItemType.CommandItem)[0]; 
LinkButton approveAllLink = cmdItem.FindControl("approveAllLink") as LinkButton; 
LinkButton approveLink = cmdItem.FindControl("approveLink") as LinkButton; 
LinkButton rejectLink= cmdItem.FindControl("rejectLink") as LinkButton; 

// Your switch logic here 
+1

Tôi đang sử dụng phiên bản v2013.1.220.45 và điều này không hiệu quả đối với tôi: mảng trống cho dòng đầu tiên của mã ở trên - Tôi đang sử dụng 'CommandItemTemplate' tùy chỉnh có thể là vấn đề, không chắc chắn . Cài đặt 'CommandItemDisplay' của tôi là' TopAndBottom'. – PeterX

+0

@PeterX cho chắc chắn trong sự kiện RadGrid1_ItemDataBound mảng không phải là null. –

+0

@PeterX thử truy xuất các điều khiển trong trình xử lý 'RadGrid_ItemCreated' bằng cách sử dụng' FindControl() 'trên' GridCommandItem' như được đề xuất trong [bài đăng Telerik này] (http://www.telerik.com/community/forums/aspnet/grid/ find-control-within-commanditemtemplate.aspx # 668918) – Boyan

3

Đảm bảo bạn có thuộc tính CommandItemDisplay của MasterTableView được đặt thành giá trị khác với Không. Nếu không, mảng lệnh được trả về từ phương thức GetItems sẽ trống.

2

Ẩn hoặc hiển thị các điều khiển trong CommandItem của bạn trong ItemCreated sự kiện của lưới:

protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) 
    { 
     if (e.Item.ItemType == GridItemType.CommandItem) 
     { 
      var approveAllLink = (LinkButton) e.Item.FindControl("approveAllLink"); 
      var approveLink = (LinkButton)e.Item.FindControl("approveLink"); 
      var rejectLink = (LinkButton)e.Item.FindControl("rejectLink"); 

      // Your switch logic here 
     } 
    }