[英]Hide edit & delete button for last row in gridview
我有一個gridview,gridview中的幾列有金額計算。 我在gridview的最后一個添加了一個新的數據行,它總結了列值和顯示。
但gridview中的最后一行有可見的編輯和刪除按鈕,我怎么可能從最后一行隱藏這兩個圖像?
<asp:GridView ID="gvDetails" DataKeyNames="UserId,UserName" runat="server"
AutoGenerateColumns="false" CssClass="Gridview" HeaderStyle-BackColor="#61A6F8"
ShowFooter="true" HeaderStyle-Font-Bold="true" HeaderStyle-ForeColor="White"
onrowcancelingedit="gvDetails_RowCancelingEdit"
onrowdeleting="gvDetails_RowDeleting" onrowediting="gvDetails_RowEditing"
onrowupdating="gvDetails_RowUpdating">
<Columns>
<asp:TemplateField>
<EditItemTemplate>
<asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="~/Images/update.jpg" ToolTip="Update" Height="20px" Width="20px" />
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="~/Images/Cancel.jpg" ToolTip="Cancel" Height="20px" Width="20px" />
</EditItemTemplate>
<ItemTemplate>
<asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="~/Images/Edit.jpg" ToolTip="Edit" Height="20px" Width="20px" />
<asp:ImageButton ID="imgbtnDelete" CommandName="Delete" Text="Edit" runat="server" ImageUrl="~/Images/delete.jpg" ToolTip="Delete" Height="20px" Width="20px" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="ID">
<EditItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Eval("ID") %>'/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblID" runat="server" Text='<%#Eval("ID") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Profit">
<EditItemTemplate>
<asp:TextBox ID="txtProfit" runat="server" Text='<%#Eval("Profit") %>'/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblProfit" runat="server" Text='<%#Eval("Profit") %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<EditItemTemplate>
<asp:TextBox ID="txtAmount" runat="server" Text='<%#Eval("Amount") %>'/>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblAmount" runat="server" Text='<%#Eval("Amount") %>'/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
您可以以編程方式隱藏它們:
var lastRow = gvDetails.Rows[gvDetails.Rows.Count - 1];
lastRow.FindControl("imgbtnEdit").Visible = false;
lastRow.FindControl("imgbtnDelete").Visible = false;
理想情況下,這應該在網格視圖是數據綁定並且包含所有行(包括最后一行)之后完成,但作為最后的手段,您可以使用Page_PreRender
。
求和數據的最佳位置在頁腳中,它將處理命令控件,因為它們未添加到頁腳。
請參閱: 在頁腳中顯示摘要數據
另外: 什么是XY問題?
示例(應該很容易轉換為C#):
'Note Global Declaration
Dim Total1 As Double = 0
Dim Total2 As Double = 0
Protected Sub GridView1_RowDataBound _
(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim drv as DataRowView = CType(e.Row.DataItem, DataRowView)
' Perform summations on Data rows
Total1 += CDbl(drv("<column_name>").ToString())
Total2 += CDbl(drv("<other_column_name>").ToString())
ElseIf e.Row.RowType = DataControlRowType.Footer Then
' Place results in footer cells
e.Row.Cells(2).Text = "Total: " & Total1.ToString()
e.Row.Cells(3).Text = "Total: " & Total2.ToString()
Endif
End Sub
嘗試這個
將編輯和刪除按鈕列的可見性設置為false。 您可以相應地設置列索引。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Cells[0].Visible = false; //0 is autogenerate edit column index
e.Row.Cells[1].Visible = false; // 1 is autogenerate delete column index
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.