7

私はこれを持っていBoundFieldますGridView

<asp:BoundField DataField="ReportId" HeaderText="RId" Visible="false" />

しかし、そのフィールドにテキストを取得しようとすると、空が返されます。

protected void gvwReports_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "ViewSchedule")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = gvwReports.Rows[index];
        string s = row.Cells[0].Text;
    }
}

BoundField's .Visibleただし、プロパティを次のように変更すると、正しい値が返されますtrue

4

8 に答える 8

25

クライアント側のhtmlを使用して非表示にするこのようなことを試してみてください

<style type="text/css">
     .hidden
     {
         display:none;
     }
</style>

<asp:BoundField DataField="ReportId" HeaderText="RId" HeaderStyle-CssClass="hidden"   >

</asp:BoundField>
于 2012-07-14T18:52:23.987 に答える
4

これは 1 年前の質問ですが (実際にはちょうど 1 年前です)、CssClass を使用しない別の回避策があります。

データバインドの直後に、目的の列の可視性を false に設定します。

gridview1.databind()
gridview1.columns(i).Visibile = False

これにより、ビューステートのデータが維持されますが、ページのマークアップは作成されません。

于 2013-07-14T06:54:21.427 に答える
2

最初の解決策は正しく機能し ますが、この列のヘッダーを非表示にするためにHeaderStyleを追加する必要がありました

<style type="text/css">
     .hidden
     {
         display:none;
     }
</style>

<asp:BoundField DataField="ReportId" HeaderText="RId"  >
    <ItemStyle CssClass="hidden"/>
    <HeaderStyle CssClass="hidden"/>
</asp:BoundField>
于 2015-02-03T11:50:30.107 に答える
0

私の知識によると、バインドされたフィールドを非表示にすると、アクセスできなくなります。TemplateFieldを使用してみてください

于 2012-07-14T18:58:03.770 に答える
0

私はちょうど同じ問題を抱えていました。

おかしなことに、DataGrid にはその問題はありません。非表示の列の情報を ViewState に追加するため、非表示の列のデータをクライアントでレンダリングしなくても、データにアクセスできます。

一方、GridView は、EnableViewState プロパティを true に設定した場合でも、隠しフィールドを単に無視します。唯一の方法は、 display: none;のように、クライアントがスタイル プロパティで非表示にできるように情報を残すことです。.

残念なことに、私は DataGrid の動作が気に入りましたが、GridView には他にも利点があります。

于 2012-09-20T11:24:57.587 に答える
0

これは私のために働いた:

列がグリッド上の名前付き DataKeyValue である場合、行から送信された e.Item を DataGridItem としてキャストし、その DataKeyValue を呼び出すことができます。Int、Stringなどに変換する必要がありますが、列がvisible = falseの場合でも存在します。

于 2014-05-15T15:55:35.973 に答える
0

rowDataBound イベントでは、次のようなものを使用してフィールドの値にアクセスできます。

(((DataRowView)e.Row.DataItem)["your_boundField_dataFieldName"]).ToString();

境界フィールドの可視性が false に設定されていても。

于 2014-07-15T13:39:01.453 に答える