2017-06-23 45 views
0

后面的按钮我正在使用webforms。我首先学习了MVC。我有一个Telerik RadGrid,里面有一个MasterTableView,然后在这个MasterTableView中有几列。我想简单地禁用代码背后的一些按钮,但Visual Studio一直告诉我这些按钮不存在。在Google搜索中,我发现原因是因为这些按钮位于RadGrid内部。但是我没有找到任何访问它们的例子。Webforms:如何禁用Telerik RadGrid中的代码位于

的按钮是radgrid控件内,他们看起来是这样的:

        <telerik:GridTemplateColumn HeaderStyle-Width="72px" HeaderText="Acciones" > 
             <ItemTemplate > 
              <div style="width: 100px"> 
               <span style="position:relative;" class="grid-buttonColor1"> 
                <i class="material-icons">create</i> 
                <asp:Button ID="btnEditReportDetail" 
                 CommandArgument='<%# Item.ReportDetailId %>' 
                 OnClick="btnReportDetail_Click" 
                 runat="server" 

                 Style="position:absolute; opacity:0; top:0; left:0; width:100%; height:100%;" 
               type="button" 
               causesvalidation="false" /> 
               </span> 
               &nbsp; 
               <span style="position: relative;" class="grid-buttonColor2"> 
                <button 
                 type="button" 
                 style="background-color: transparent; border: none; padding: 0" 
                 data-toggle="modal" 
                 data-target="#MessageBoxModal" 
                 onclick="ShowMessageBoxWithMessage_<%= ucMessagebox.ClientID%>('Confirmación', '¿Está seguro que desea eliminar la tarea?','DeleteTaskReports','<%# Item.ReportDetailId.ToString() %>')"> 
                 <i class="material-icons prefix">delete</i> 
                </button> 
               </span> 
              </div> 
             </ItemTemplate> 
            </telerik:GridTemplateColumn> 

如何访问,以便在写代码背后的东西像那些按钮:buttonName.Enabled = false;

请!这真让我抓狂!

谢谢你们!

+0

网格是否有服务器端数据绑定事件?如果是的话,我想你可以访问那里的按钮。只是一个狂野的猜测 – Etienne

回答

1

可能,这将帮助你

protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     GridDataItem item = (GridDataItem)e.Item; 
     Button btn = item.FindControl("img1") as Button; 
     btn.Enabled = false;    

    } 
} 

protected void RadGrid1_PreRender(object sender, EventArgs e) 
{ 
if ("your Condition") 
{ 
    foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items) 
    { 
     ((Button)cmdItem.FindControl("btnEditReportDetail")).Visible = false; 
    } 
} 
} 
+0

谢谢Vaibhav你的快速答案。你的第二个例子应该帮助只是一个问题。假设是“cmdItem”?它给我一个错误。你的意思是在foreach中写入“dataItem”嵌入? – SamyCode

+0

是的,我改变了cmdItem为dataItem,现在它的工作。谢谢!! – SamyCode

1

您需要使用FindControl找到服务器控件网格内。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    Button button = e.Row.FindControl("Button1") as Button; 
    button.Enabled = false; 
}