Webforms:如何在代码隐藏中禁用 Telerik RadGrid 内的按钮
Webforms: How to disable a button that is inside a Telerik RadGrid in code behind
我是网络表单的新手。我先学了MVC。我有一个 Telerik RadGrid,里面有一个 MasterTableView,然后,这个 MasterTableView 里面有几个列。我想简单地禁用后面代码中的一些按钮,但 Visual Studio 一直告诉我这些按钮不存在。在 Google 搜索中我发现原因是因为按钮在 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>
<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;
拜托!这真让我抓狂!
谢谢大家!
也许这会对你有所帮助
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;
}
}
}
您需要使用 FindControl
来找到 Grid 内部的服务器控件。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
Button button = e.Row.FindControl("Button1") as Button;
button.Enabled = false;
}
我是网络表单的新手。我先学了MVC。我有一个 Telerik RadGrid,里面有一个 MasterTableView,然后,这个 MasterTableView 里面有几个列。我想简单地禁用后面代码中的一些按钮,但 Visual Studio 一直告诉我这些按钮不存在。在 Google 搜索中我发现原因是因为按钮在 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>
<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;
拜托!这真让我抓狂!
谢谢大家!
也许这会对你有所帮助
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;
}
}
}
您需要使用 FindControl
来找到 Grid 内部的服务器控件。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
Button button = e.Row.FindControl("Button1") as Button;
button.Enabled = false;
}