我有一个使用模板的gridview,在该模板中我有两个按钮: 这是我的代码:
<asp:GridView ID="gvtransaction" runat="server" AutoGenerateColumns="False" Width="60%" OnDataBinding="gvtransaction_DataBinding">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="lblid" runat="server" Text='<%# Bind("id") %>' Visible="false"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Consumer">
<ItemTemplate>
<asp:Label ID="lblfirstname" runat="server" Text='<%# Bind("FirstName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lbllastname" runat="server" Text='<%# Bind("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<asp:Label ID="lblamount" runat="server" Text='<%# Bind("Amount") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="lblcurrencyID" runat="server" Text='<%# Bind("CurrencyID") %>' Visible="false"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Account Name">
<ItemTemplate>
<asp:Label ID="lblcurrencyname" runat="server" Text='<%# Bind("CurrencyName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblstatus" runat="server" Text='<%# Bind("Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DateCreated">
<ItemTemplate>
<asp:Label ID="lbldatecreated" runat="server" Text='<%# Bind("DateCreated") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnApprove" runat="server" Text="Approve" CommandName="Select" OnClick="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnReject" runat="server" Text="Reject" CommandName="Select" OnClick="btnReject_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我想要发生的是,当页面加载并且它看到状态不是Pending时,按钮不应该是可见的,否则按钮是可见的。
帮助任何人。?
答案 0 :(得分:1)
我和你有同样的问题,我完成了这个:
但我在vb.net上使用它,在你的gvtransaction_DataBinding
代码后面添加代码如下:
'Get The Data Row'
If e.Row.RowType = DataControlRowType.DataRow Then
'Get Label Status Value'
Dim lblstatus As Label = DirectCast(e.Row.FindControl("lblstatus"), Label)
'Get Button Items'
Dim btnapprove As Button= DirectCast(e.Row.FindControl("btnApprove"), Button)
Dim btnReject As Button= DirectCast(e.Row.FindControl("btnReject"), Button)
If lblstatus.Text = "Pending" Then
btnapprove.Visible = true
btnReject.visible = true
Else
btnapprove.Visible = false
btnReject.visible = false
End If
End If
如果您正在寻找它,那就很高兴。
答案 1 :(得分:1)
嘿,如果你只想显示基于条件和更多性能隐藏按钮,那么你必须在客户端显示隐藏按钮而不是去服务器端并迭代RowDataBound
事件。在我看来,你必须使用这样的客户端代码。
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnApprove" runat="server" Visible='<%# Bind("Status") %> =="Pending" ? True:False'
Text="Approve" CommandName="Select" OnClick="btnApprove_Click" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="btnReject" runat="server" Visible='<%# Bind("Status") %> =="Pending" ? True:False'
Text="Reject" CommandName="Select" OnClick="btnReject_Click" />
</ItemTemplate>
</asp:TemplateField>
我并不是说RowDataBound事件没有实现你的目标,但是它确实达到了目标。
希望它对你有所帮助。