none
datagridview and database RRS feed

  • 問題

  • 想請教各位先進,

    如果我從database撈資料到datagridview,但有要先判斷值來選擇顯示的內容,該怎麼做呢?

    詳細的例子如下:如果db的一個table的其中一個欄位叫做"gender",是存int值(0或1),那想要datagridview顯示的是男生或女生,而不是0,1,那我應該要怎麼做呢?

    麻煩大家解答了

    2015年1月18日 下午 05:05

解答

  • private void DataGridView1_CellFormatting(object sender,
        DataGridViewCellFormattingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
        if (dgv.Columns[e.ColumnIndex].Name == "TargetColumnName" &&
            e.RowIndex >= 0 &&
            dgv["TargetColumnName", e.RowIndex].Value is int)
        {
            switch ((int)dgv["TargetColumnName", e.RowIndex].Value)
            {
                case 0:
                    e.Value = "男生";
                    e.FormattingApplied = true;
                    break;
                case 1:
                    e.Value = "女生";
                    e.FormattingApplied = true;
                    break;
            }
        }
    }


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆標示為解答以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to clickMark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2015年1月19日 上午 03:13

所有回覆

  • 您好,
    您可以在取得資料時,先依gender的值,新增一個欄位叫genderName,來處理男生或女生,
    SQL:

    CASE gender
     WHEN 1 THEN '男生'
     WHEN 0 THEN '女生'
     ELSE '中性'
    END as genderName

    或是取得資料後,在DataTable新增calculated column去轉換,

    DataTable yourDataTable = new DataTable();
    yourDataTable.Columns.Add("gender", typeof(int));
    yourDataTable.Rows.Add(1);
    yourDataTable.Rows.Add(0);

    yourDataTable.Columns.Add("genderName", typeof(string));
    yourDataTable.Columns["genderName"].Expression = "IIF(gender>0,'男生','女生')" ;


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2015年1月19日 上午 12:58
  • private void DataGridView1_CellFormatting(object sender,
        DataGridViewCellFormattingEventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
        if (dgv.Columns[e.ColumnIndex].Name == "TargetColumnName" &&
            e.RowIndex >= 0 &&
            dgv["TargetColumnName", e.RowIndex].Value is int)
        {
            switch ((int)dgv["TargetColumnName", e.RowIndex].Value)
            {
                case 0:
                    e.Value = "男生";
                    e.FormattingApplied = true;
                    break;
                case 1:
                    e.Value = "女生";
                    e.FormattingApplied = true;
                    break;
            }
        }
    }


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆標示為解答以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to clickMark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2015年1月19日 上午 03:13
  • 謝謝幫忙

    2015年1月22日 上午 05:55
  • 謝謝幫忙

    2015年1月22日 上午 05:55