2015年2月23日月曜日

DataGrid内のセルを結合する方法

目的

 表題のとおり、DataGrid内のセルを結合し、表示する方法を示す。

結合前後


  結合前



結合後





ソースのポイント

ItemDataBoundメソッド内以下の処理を行う。
  1. ColumnSpanプロパティの設定する
  2. あふれてしまう2列目(item2)の1~5のデータを削除する
        protected void MyGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            if(e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer)
            {
                e.Item.Cells[0].ColumnSpan = 2; // Colspanの設定
                e.Item.Cells.RemoveAt(1);       // ★ポイント:不要なデータの削除★
            }
        }

ソース全文


Default.aspx.cs -------------------------------
using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataGrid_ColSpan
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            DataTable dt = new DataTable();
            DataRow dr = null;

            dt.Columns.Add(new DataColumn("item", typeof(string)));
            dt.Columns.Add(new DataColumn("item2", typeof(string)));

            for (int i = 0; i < 5; i++  )
            {
                dr = dt.NewRow();
                dr["item"] = i.ToString();
                dr["item2"] = (i+1).ToString();
                dt.Rows.Add(dr);
            }
            MyGrid.DataSource = dt;
            MyGrid.DataBind();
        }

        protected void MyGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            if(e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer)
            {
                e.Item.Cells[0].ColumnSpan = 2; // Colspanの設定
                e.Item.Cells.RemoveAt(1);       // ★ポイント:不要なデータの削除★
            }
        }


    }
}
-------------------------------

Default.aspx  -----------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataGrid_ColSpan._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>DataGrid_ColSpan Sample</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataGrid id="MyGrid" runat="server" OnItemDataBound="MyGrid_ItemDataBound" />
    </div>
    </form>
</body>
</html>
-----------------------------------

2015年2月20日金曜日

DataGrid内にDropDownListを文字列で設定する。

メモとして残す。
後で編集する予定。

################# Default.aspx.cs ################
using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DataGridInPanel
{
    public partial class _Default : System.Web.UI.Page
    {

        void BindDataGrid( DataView dv )
        {
            datagrid.DataSource = dv;
            datagrid.DataBind();
        }
        // 表示用のデータソース (DataView) を生成
        private DataView CreateDataSource()
        {
            DataTable dt = new DataTable();
            DataRow dr;

            dt.Columns.Add(new DataColumn("DropDownList", typeof(string)));

            for (int i = 0; i < 5; i++)
            {
                dr = dt.NewRow();

                dr["DropDownList"] = "<select name=\"blood\"><option value=\"A\">A型</option><option value=\"B\">B型</option></select>";

                dt.Rows.Add(dr);
            }


            DataView dv = new DataView(dt);
            return dv;
        }
           
         
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataView dv = CreateDataSource();
                BindDataGrid(dv);
            }
        }
    }
}


################# Default.aspx ################

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataGridInPanel._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
        <asp:Panel ID="Panel1" runat="server">
            <asp:DataGrid runat="server" ID="datagrid" />
        </asp:Panel>
 
    </div>
    </form>
</body>
</html>

2015年2月15日日曜日

「本当に頭がよくなる 1分間勉強法」の弱点について

目的

「本当に頭がよくなる 1分間勉強法」は大変よい本だと思う。しかし、それにも弱点があった。
その部分を簡単に書いてみようと思う。

本の概要

本書は一言で言うと、「勉強は復習を短い時間でたくさんやること」ということ。
1秒1ページで目を通し、何回も頭に刺激を与え、長期記憶に記憶する方法を取っている。

弱点について

ただ、本書には弱点があると思う。それは★理解できないことは何度見ても理解できない★
部分が克服できていないことだ。
本内では、「カラーマジックという方法で克服できる」とあるが、それは間違いである。

カラーマジックとは、読んでいる本の大切だと思ったところを1枚の紙に書き写して、それを
何回も見ることだとある。なので、よくわからない部分を書き写して、何度も見れば克服できる
いうことになる。だが、それで理解できないものが理解できるほど単純なものだろうか。

著者が書かれている本が、英単語の本ばかりであることが、弱点を克服できていないことの
現れだと思う。

2015年2月8日日曜日

口内炎にはパープルショット!

上唇の裏側に1つ口内炎ができた。
麺類(ラーメン、うどん、そばetc...)を食べてすするときは痛かった。
時期的に風邪をひいて、喉が痛くなったときと重なった。このときパープルショットを購入した。
容器に口内炎も治せると書いてあったので、吹きかけてみたら、1週間治らなかった口内炎がパープルショットを付けたら、2~3日で治った。
これからは疲れなどで口内炎ができてしまったときは、パープルショットを吹きかけて治そうと思う。