8

グリッド ビューがあり、さまざまなデータを使用しています。

<asp:BoundField DataField="Catagory" HeaderText="Support Catagory" SortExpression="Catagory" />
<asp:BoundField DataField="AppName" HeaderText="Application Name" SortExpression="IncidentNumber" />
<asp:BoundField DataField="IncidentNumber" HeaderText="Incident #" SortExpression="IncidentNumber" />
<asp:BoundField DataField="Hours" HeaderText="Hours" SortExpression="Hours" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="CreatedDate" HeaderText="Created Date" SortExpression="CreatedDate" />
<asp:BoundField DataField="PK_DailyTaskHours" HeaderText="" SortExpression="PK_DailyTaskHours" ReadOnly="true" />
<asp:BoundField DataField="PK_NonScrumStory" HeaderText="" SortExpression="PK_NonScrumStory" ReadOnly="true" />

最後の 2 つの列は表示したくありませんが、この C# コードで主キーを取得できるように使用しています。

    string dailyTaskHoursPK = (string)e.Values["PK_DailyTaskHours"].ToString();
    string nonScrumStoryPK = (string)e.Values["PK_NonScrumStory"].ToString();
    SqlDataSource4.DeleteParameters["dailyTaskHoursPK"].DefaultValue = dailyTaskHoursPK;
    SqlDataSource4.DeleteParameters["nonScrumStoryPK"].DefaultValue = nonScrumStoryPK;

ただし、最後の 2 列は表示したくありません。しかし、私が設定したとき:

Visible="false"

プログラムを実行しようとすると、次のエラーが表示されます。

オブジェクト参照がオブジェクト インスタンスに設定されていません。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

私は何を間違っていますか?ユーザーがこれらのフィールドを表示できないようにするにはどうすればよいですか?

4

6 に答える 6

9

トレバーは正しいですDataKeyNames。DataGrid マークアップで次のように設定する必要があります。

<asp:GridView ID="GridView1" runat="server" 
        DataKeyNames="PK_DailyTaskHours,PK_NonScrumStory"

これが完了したら、次のような文字列として値を取得できます。

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string dailyTaskHoursPK = GridView1.DataKeys[0].Values["PK_DailyTaskHours"].ToString();
        string nonScrumStoryPK = GridView1.DataKeys[0].Values["PK_NonScrumStory"].ToString();
    }
于 2013-07-01T21:45:50.003 に答える
5

それらを Visible="true" にしようとしますが、css で非表示にします。

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

...
<asp:BoundField DataField="PK_DailyTaskHours" HeaderText="" SortExpression="PK_DailyTaskHours" ReadOnly="true" >
    <ItemStyle CssClass="hidden-field"/>
</asp:BoundField>
<asp:BoundField DataField="PK_NonScrumStory" HeaderText="" SortExpression="PK_NonScrumStory" ReadOnly="true" >
    <ItemStyle CssClass="hidden-field"/>
</asp:BoundField>
于 2013-07-01T21:26:14.753 に答える
1

上記のコードは BoundField 値を非表示にしますが、ヘッダーテキストを非表示にせず、すべての列に一致しないため、いくつか変更します

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

...

<asp:BoundField DataField="PK_NonScrumStory" HeaderText=""  SortExpression="PK_NonScrumStory" ReadOnly="true" ItemStyle-CssClass="hidden-field" HeaderStyle-CssClass="hidden-field" >
</asp:BoundField>

今では適切な作業です

于 2015-08-07T13:16:27.927 に答える
0

font-size を使用して論理的に使用してみてください

例えば

grid.Columns[0].HeaderStyle.Font.Size = grid.Columns[0].ItemStyle.Font.Size = 0;
于 2017-08-22T09:44:49.387 に答える