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 コールバックでコマンド Name をチェックし、操作を行います。そこでボタンの可視性を false に設定し、ラベルを true に設定します。別のオプションは、上記の回答で説明したようにボタンを有効/無効にし、無効なスタイルをそのような方法で作成することですラベルのように見えること。グリッド ビュー コマンドの引数については、次のリンクを参照して ください。

于 2012-04-13T01:04:26.663 に答える