如何在Gridview中显示false编辑命令按钮

本文关键字:false 编辑 命令 按钮 显示 Gridview | 更新日期: 2023-09-27 18:16:34

我正在做一个asp.net应用程序。其中我添加了一个命令按钮,用于编辑行。我的Gridview是

<asp:GridView ID="gvCustomerPaymentDetails" runat="server" 
  AutoGenerateColumns="false" ShowFooter="true" OnRowEditing="EditPayment" 
  OnRowUpdating="UpdatePayment" OnRowCancelingEdit="CancelEdit"
  CssClass="table table-bordered table-hover" Style="margin-left: 5px; margin-right: 5px;">
  <Columns>
       <asp:TemplateField HeaderText="ID">
           <ItemTemplate>
             <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID")%>'></asp:Label>
           </ItemTemplate>
           <ItemStyle Width="2%" />
       </asp:TemplateField>
       <asp:TemplateField HeaderText="Pay Amount">
           <ItemTemplate>
               <asp:Label ID="lblPayAmount" runat="server" Text='<%# Eval("Pay_Amount")%>'></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtPayAmount" runat="server" style="width:100%"  Text='<%# Eval("Pay_Amount")%>'></asp:TextBox>
             </EditItemTemplate>
             <FooterTemplate>
                <asp:TextBox ID="txtPayAmount" style="width:100%" runat="server"></asp:TextBox>                                                </FooterTemplate>                                                
        </asp:TemplateField>
 <asp:TemplateField HeaderText="Action">
     <ItemTemplate>
        <asp:LinkButton ID="linkPayNow" runat="server" Text="Pay Now" CommandArgument='<%#Eval("ID") %>' CommandName="Pay"></asp:LinkButton>
        <asp:Label ID="txtStatus" runat="server" Text="Paid" Style="margin-left: 20px;" Visible="false"></asp:Label>
        <asp:LinkButton ID="lnkRemove" runat="server" CommandArgument='<%# Eval("ID")%>' OnClientClick="return confirm('Do you want to delete?')"
        Text="Delete" OnClick="DeletePayment"></asp:LinkButton>
     </ItemTemplate>
     <FooterTemplate>
       <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="AddNewPayment" CommandName="Footer" />
     </FooterTemplate>
  </asp:TemplateField>
     <asp:CommandField ShowEditButton="True" />
</Columns>
 <EmptyDataTemplate>
     <tr>
      <th scope="col">Pay Amount
       </th>
      <th scope="col"></th>
     </tr>
     <tr>
      <td>
        <asp:TextBox ID="txtPayAmount" runat="server" />
     </td>
     <td>
       <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="AddNewPayment" CommandName="EmptyDataTemplate" />
     </td>
     </tr>
   </EmptyDataTemplate>
</asp:GridView>

我有一个标签"lblStatus",它将是0或1。如果它的值是1,那么我想要显示该特定行的更新和编辑命令按钮。我找了很多,但没有找到任何完美的解决方案。

如何在Gridview中显示false编辑命令按钮

在这种情况下,我将把CommandField转换为TemplateFields。为此,您将在设计视图中单击网格视图中的智能标记。这将做的是将命令字段更改为linkbuttons,您可以在后面的代码中将其设置为false。您将需要给您的新链接按钮适当的ID,以便您可以在后台代码中找到它们。然后创建一个绑定方法。像. .

protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
   //Code Here to Disable button. I'd use a Foreach loop like this.
   foreach(GridViewRow gvr in GridView1.Rows)
   {
        Label label = ((Label)gvr.FindControl("label"));
        LinkButton edit = ((LinkButton)gvr.FindControl("edit"));
        if (label.Text == 1)
        {
           edit.Visible = false;
        }
   }       
}

希望这能让你找到正确的方向。我想这个应该能行。