2012-09-20 74 views
1

這是我的代碼自定義和訪問控制onItemCommand

<EditFormSettings PopUpSettings-Width="500" EditFormType="Template"> 
<FormTemplate> 
<asp:DropDownList ID="Status" DataSourceID="TerminalStatusDTS" DataValueField="STATUS_ID" DataTextField="STATUS_NAME" runat="server" Width="175px" ></asp:DropDownList> 
</FormTemplate> 

我的問題是如何讓Status無形之中e.commandName=RadGrid.InitInsertCommandName onItemCommand事件?

回答

1

對於RadGrid的每一行,EditForm都不相同。首先,您必須獲取正在編輯的行的行索引並獲取對「編輯」窗體的引用。然後你可以在編輯表單中找到控件。一個示例代碼可能如下:

if (e.CommandName == RadGrid.InitInsertCommandName) 
{ 
    RadGrid radgrid = (RadGrid)sender; 
    int rowindex = e.Item.RowIndex; 
    GridEditFormItem item = radgrid.MasterTableView.GetItems(GridItemType.EditFormItem)[rowindex] as GridEditFormItem; 
    DropDownList statusDropDownList = (DropDownList)item.FindControl("Status"); 
    statusDropDownList.Visible = false; 
} 

但是,這可能不是你所需要的。我的意思是,當頁面在ItemCommand上有一個回發時,狀態下拉列表將顯示,我認爲當您單擊「插入」命令(不同的行爲在更新和插入)時,您只需要隱藏控件。

因此,您可以訪問DropDownList並將其隱藏在ItemCreated事件或ItemDataBound事件上。

例如:

void rad_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridEditFormInsertItem) 
    { 
     DropDownList statusDropDownList = (DropDownList)e.Item.FindControl("Status"); 
     statusDropDownList.Visible = false; 
    } 
}