禁用GridView TemplateField中的按钮

本文关键字:按钮 TemplateField GridView 禁用 | 更新日期: 2023-09-27 18:25:28

我有以下网格视图控制

<asp:Panel runat="server" ID="pnlBeforeSave" Visible="true">
<asp:GridView ID="gvP" runat="server" AutoGenerateColumns="false" AllowPaging="false"
  AllowSorting="false" CssClass="list-table" HeaderStyle-CssClass="header">
  <Columns>
  <asp:TemplateField HeaderText="Action" ItemStyle-Width="20%" HeaderStyle-HorizontalAlign="Center"
  ItemStyle-CssClass="unsortable">
  <ItemTemplate>
  <input id="btnPay" type="button" onclick="javascript:OpenEditPaymentItemDialogPage('<%# Eval("PmtId") %>');"
   value="Edit" class="button save" style="width: 80px" />
   </ItemTemplate>
   </asp:TemplateField>
   </Columns>
   </asp:GridView>
</asp:Panel>

在我将网格视图数据集保存到数据库后,我必须禁用网格视图。但是btnPay仍然启用。我需要从代码后面完成知道吗?

禁用GridView TemplateField中的按钮

您需要通过添加RunAt="Server"元素的使用,使输入type="button"可在代码后台访问

所以你的代码会像一样

<ItemTemplate>   
<input ruat="server" id="btnPay" type="button" onclick="javascript:OpenEditPaymentItemDialogPage('<%# Eval("PmtId") %>');"    value="Edit" class="button save" style="width: 80px" />  
  </ItemTemplate> 

或利用Asp:Button

<ItemTemplate>   
<asp:button ruat="server" id="btnPay" type="button" onClientclick="javascript:OpenEditPaymentItemDialogPage('<%# Eval("PmtId") %>');"    value="Edit" class="button save" style="width: 80px" >   </asp:button>
  </ItemTemplate> 

然后利用数据网格视图的RowDataBound事件和禁用按钮。。

您可以使用,

<asp:Button ID="btnPay" runat="server" OnClick="btnPay_Click" OnClientClick="return confirm('Are you sure?')" Text="Edit" CommandArgument='<%# Eval("PmtId") %>'/>
public void btnPay_Click(object sender, EventArgs e)
{
    var button = (Button)sender;
    ClientScript.RegisterStartupScript(typeof(Page), "key", "<script>OpenEditPaymentItemDialogPage('" + button.CommandArgument + "');</script>");
}

我完成了。

C#

ScriptManager.RegisterStartupScript(this, this.GetType(), "HidePaymentItemButtons", "javascript:disableAllButtons_PT;", true);

JS-

        function disableAllButtons_PT() {
        var gridViewID = "<%=gvPamentItemsList.ClientID %>";
        var gridView = document.getElementById(gridViewID);
        var gridViewControls = gridView.getElementsByTagName("input");
        for (i = 0; i < gridViewControls.length; i++) {
            // if this input type is button, disable
            if (gridViewControls[i].type == "submit") {
                gridViewControls[i].disabled = true;
            }
        }

保存数据后,放入以下代码。我已经测试过了。onlcick被禁用。

for (int i = 0; i < gvP.Rows.Count; i++)
{
   HtmlInputButton btn = (HtmlInputButton)gvP.Rows[i].FindControl("btnPay");
   if (btn != null) btn.Disabled = true;
}