1

問題があり、それに対する答えが見つかりません。VS2012 では、C#で ASP.NET Web サイトを作成しました。

メンバーシップ プロバイダーのセットアップと作業が完了しました。管理者がロールを編集してユーザーをブロックできる管理ページを作成したいと考えました。サーバー エクスプローラーから asp_membership テーブルをページにドラッグすると、それ自体が作成されました。

関係のない列をいくつか削除し、2 つのボタンを持つ itemtemplatefield を追加しました。最初にコードを見てください。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="UserId" DataSourceID="SqlDataSource1" 
    EmptyDataText="There are no data records to display." 
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged" >
    <Columns>
        <asp:CommandField ShowDeleteButton="True" />
        <asp:TemplateField HeaderText="Block users">
            <ItemTemplate>
                <asp:Button runat="server" ID="btnBlock" CommandName="Block"
                    Text="Block" OnClick="btnBlock_Click" Visible='<%# Convert.ToBoolean(Eval("IsLockedOut").ToString()) %>'/>
                <asp:Button runat="server" ID="btnDeblock" CommandName="Deblock"
                    Text="Deblock" OnClick="bntDeblock_Click" Visible='<%# Convert.ToBoolean(Eval("IsLockedOut").ToString()) %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="UserId" HeaderText="User id" ReadOnly="True" 
            SortExpression="UserId" />
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
        <asp:CheckBoxField DataField="IsApproved" HeaderText="Confirmed" 
            SortExpression="IsApproved" />
        <asp:BoundField DataField="CreateDate" HeaderText="Created" 
            SortExpression="CreateDate" />
        <asp:BoundField DataField="LastLoginDate" HeaderText="Last login" 
            SortExpression="LastLoginDate" />
        <asp:CheckBoxField DataField="IsLockedOut" HeaderText="Locked" 
            SortExpression="IsLockedOut" />
        <asp:BoundField DataField="LastLockoutDate" HeaderText="Last lockout" 
            SortExpression="LastLockoutDate" />
        <asp:BoundField DataField="FailedPasswordAttemptCount" 
            HeaderText="Failed logins" 
            SortExpression="FailedPasswordAttemptCount" />
        <asp:BoundField DataField="Comment" HeaderText="Comments" 
            SortExpression="Comment" />
    </Columns>
</asp:GridView>

チェックボックスフィールド「IsLockedOut」が無効になっている場合は表示され、次の場合は表示されない2つのボタン(ブロックとブロック解除)を作成しようとしています...ポイントを取得します。

ページを読み込むと、両方のボタンが消えます。ここにエラーがあると思います: <%# Convert.ToBoolean(Eval("IsLockedOut").ToString()) %>? 誰かが私を助けることができますか?

4

1 に答える 1

1

.ToString()またはConvert.ToBoolean();は必要ありません。.NET は、内部でほとんどのことを行います。

Visible='<%# Eval("IsLockedOut") %>'

<asp:Label />に aを追加して、上記のようにプロパティをItemTemplateバインドするとどうなりますか? TextあなたのIsLockedOut財産はNullable<Boolean>ですか?そうであれば、これを試すことができます:

Visible = '<%# Eval("IsLockedOut") ?? true %>'

または

Visible = '<%# ((Nullable<bool>)Eval("IsLockedOut")).GetValueOrDefault(true) %>'
于 2012-11-12T23:01:12.927 に答える