GridView onDataBinding

时间:2013-06-07 03:53:49

标签: asp.net gridview data-binding

我有一个使用模板的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时,按钮不应该是可见的,否则按钮是可见的。

帮助任何人。?

2 个答案:

答案 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事件没有实现你的目标,但是它确实达到了目标。

希望它对你有所帮助。