1

私は新しい ASP.NET 開発者であり、各部門の従業員を管理する方法として GridView コントロールを使用しようとしています。この GridView は、データベースの従業員テーブルのすべての従業員を表示します。今、私は次の問題に直面しています:

参考までに、次のデータベース設計があります。

Employee Table: Username, Name, JobTitle, BadgeNo, IsActive, DivisionCode
Divisions Table: SapCode, DivisionShortcut

(IsActive は、従業員が割り当てられているかどうかを示すフラグ (ビット データ型) のようなものです)

IsActiveは、GridView にチェックボックスとして表示されます。チェックされている場合は true を意味し、従業員は自分の部門に存在します。チェックされていない場合は、従業員が部門に属していないことを意味し、GridView から非表示にする必要があります。では、どうやってそれを行うのですか?また、編集モードでチェックボックス以外に表示される(True)テキストを非表示にしたい。それもどうしよう?

ASP.NET コード:

<asp:TemplateField HeaderText="Is Active?">
                    <ItemTemplate>
                        <%# Eval("IsActive")%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:CheckBox ID="isActive" runat="server" Text='<%# Bind("IsActive")%>' />
                    </EditItemTemplate>
                </asp:TemplateField>

アップデート:

従業員が非アクティブであるため、すべての情報を GridView から非表示にする必要があります。

4

2 に答える 2

0

これを試して

<asp:CheckBox ID="isActive" runat="server" Visible='<%# Bind("IsActive")%>' Text='<%# Bind("IsActive")%>' />
于 2012-07-10T08:02:17.053 に答える
0

代わりにこれを使用してください。IsActive が表示されないように、text プロパティを削除しました。可視性は IsActive フラグによって制御されます

<asp:TemplateField HeaderText="Is Active?">
                    <ItemTemplate>
                        <%# Eval("IsActive")%>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:CheckBox ID="isActive" runat="server" Checked='<%# Eval("IsActive").ToString().Equals("True")  %> />
                    </EditItemTemplate>
                </asp:TemplateField>

編集

非アクティブなユーザーに対して行全体を非表示にする場合は、databind() 操作を実行する前に、非アクティブなユーザーをデータセットからフィルター処理することをお勧めします。データベース側でフィルタリングすることもできますが、シナリオ全体がわからないため、これをお勧めします。

 DataSet filter = ds.Tables[0].Select("IsActive == 'True'");
    gridUser.DataSource = filter;
    gridUser.DataBind();
于 2012-07-10T08:03:54.133 に答える