0

我有一个使用模板的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>

我想要发生的是,当页面加载并且它看到状态不是待处理时,按钮不应该是可见的,否则按钮是可见的。

帮助任何人。?

4

2 回答 2

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

很高兴它是您正在寻找的东西。

于 2013-06-07T04:03:53.240 回答
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 事件没有达到你的目标,但是它达到了性能。

希望它可以帮助你。

于 2013-06-07T06:15:59.237 回答