0

注意:我是一名初级 Web 开发人员,对 PHP 有点熟悉。我一直对 ASP.NET 很好奇,想尝试一下。

现在,我正在尝试显示如下表的小型库应用程序:

Title                - Author        - Status
The Eye of the World - Robert Jordan - Checked Out
The Great Hunt       - Robert Jordan - Check Out
The Dragon Reborn    - Robert Jordan - Check Out

我创建了一个 DataSet 和一个执行以下查询的 TableAdapter:

SELECT        books.SerialNumber, books.Title, books.Author, CheckedOut.cardNumber
FROM            books LEFT OUTER JOIN
                         CheckedOut ON books.SerialNumber = CheckedOut.SerialNumber

我这样做是为了获得 NULL 或 cardNumber 以供下面使用。

这是我主页的当前状态:

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Browse.aspx.cs" Inherits="_Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="SerialNumber,cardNumber" DataSourceID="ObjectDataSource1" 
        OnRowDataBound="browseMethod"
        AllowPaging="True" onselectedindexchanged="GridView1_SelectedIndexChanged">
        <Columns>
            <asp:BoundField DataField="SerialNumber" HeaderText="SerialNumber" 
                InsertVisible="False" ReadOnly="True" SortExpression="SerialNumber" 
                Visible="False" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="Author" HeaderText="Author" 
                SortExpression="Author" />
            <asp:BoundField DataField="cardNumber" HeaderText="cardNumber" 
                SortExpression="cardNumber" Visible="False" />
            <asp:TemplateField HeaderText="Status">
                <ItemTemplate>
                    <asp:Button ID="Button1" runat="server" 
                        CommandArgument='<%# Eval("cardNumber") %>' 
                        Text="Check Out" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
</asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetLibraryBooks" 
        TypeName="DataSet1TableAdapters.DataTable1TableAdapter">
    </asp:ObjectDataSource>
</asp:Content>

当该行的“cardNumber”值为NULL时,我希望能够将“签出”按钮更改为标签(“签出”)。另外,如何在调用每个按钮时创建一个事件,并获取正确的序列号?

4

2 回答 2

0

在填充网格时,将为网格中的每一行调用browseMethod。因此,您可以根据条件启用或禁用按钮..

您可以通过按钮名称“Button1”使用 row.FindControl 获取按钮并将其转换为按钮并调用 button.Enabled = true 或 false .. 基于 cc 编号..

我希望这应该引导你走上正确的道路......

于 2012-04-13T01:01:42.950 回答
0

您可以创建另一个控件标签并将其可见性设置为 false。您已经为按钮设置了命令参数。也请给出命令名称。

<asp:Button ID="Button1" runat="server"                          CommandArgument='<%# Eval("cardNumber") %>'          CommandName="CheckOut"                 Text="Check Out" /> 

在 gridview_rowCommand 回调中检查命令名称并执行操作。将按钮的可见性设置为 false 并将标签设置为 true。另一个选项将是启用/禁用按钮,如上面的答案中讨论的那样,禁用样式以这样的方式制作它看起来像一个标签。对于网格视图命令参数,请参阅以下链接:- http://msdn.microsoft.com/en-us/library/bb907626.aspx

于 2012-04-13T01:04:26.663 回答