0

次の表があるとします。

LogID   UserID  Date                Action
1       Bob     2013-05-23 13:30:27 1
2       Bill    2013-05-23 13:31:36 1
3       Bob     2013-05-23 13:32:45 2
4       Bill    2013-05-23 13:35:12 2

次に、 を作成し、列と列GridViewを入力します。DateAction

Date                Action
2013-05-23 13:30:27 1
2013-05-23 13:31:36 1
2013-05-23 13:32:45 2
2013-05-23 13:35:12 2

またはの下にまたはGridViewを表示するのではなく、それぞれまたはを表示するにはどうすればよいでしょうか?12ActionClock-InClock-Out

前もって感謝します!


これは私のクエリです (識別子は質問とは関係ありません)。ここにケースステートメントをどこに追加できますか?

var Entries = from entries in db.EmployeeTimeClocks
              where entries.Date.Value.Day == DateTime.Now.Day &&
                    entries.UserId == AppCommon.Security.CurrentUser.UserId
              orderby entries.ID descending
              select entries;
4

4 に答える 4

1

初め

これで何をしたいのかわかりません。ただし、アクションが 1 と 2 (インまたはアウト) の 2 つだけの場合は、列を「クロックイン」と呼び、Bitタイプにする必要があります。

これは SQL 側で行う必要があります。

このテーブルとの関係 ( ForeignKey ) で別のテーブルを作成するだけです。

Actions

  | ID  |  Name     |
  ------------------
  |1    | Clock-In  |
  |2    | Clock-Out |

正しい名前を返す case ステートメントを使用してクエリを変更することもできます。

ここにはクエリがありませんので、これは単なる例です:

SELECT CASE Action WHEN 1 THEN 'Clock-In' ELSE 'Clock-Out' END

この場合、可能なオプションが 1 または 2 の 2 つだけであることを確認してください。

于 2013-05-28T15:25:23.653 に答える
1

テンプレート列を作成して、次のようにテキストを設定できます

<asp:TemplateField HeaderText="Action" >
    <ItemTemplate><%# (Eval("Action")==1) ? "ClockIn" : "ClockOut" %></ItemTemplate>
</asp:TemplateField>
于 2013-05-28T15:27:05.620 に答える
1

コードビハインドを使用する場合は、GridView の RowDataBound イベントを確認してください。

    protected void GridView1_RowDatabound(object source, GridItemEventArgs e)
    {
        try
        {
            //Get Row Data
            //if(value == 1/2)                
            //re-assign to DataGrid's Row

        }
        catch (Exception exception)
        {
            //HandleException
        }
    }
于 2013-05-28T15:29:27.223 に答える