.Net Compact Framework中的DataGird 學習

 

原文地址:http://www.cnblogs.com/bengxia/archive/2006/06/08/420529.aspx

        方法不錯!值得借鑑,簡單易懂!


       
前不久在使用VS.NET 2005開發Pocket PC 2003應用的時候發現DataGrid是不支持即時編輯的,開始總在找DataSource的問題,Google之後找到了問題根源:NET Compact Framework 版本的 DataGrid 的一個主要區別在於它無法在運行時在 DataGrid 中編輯單元格。但是覺得MSDN提供的方案不夠理想,就稍微改良了一下。

//由於NetCF上的DataGrid不支持編輯,所以用這個文本框來託管.
private TextBox _cellEditBase = new TextBox();

public FormTest()
{
    InitializeComponent();

    //
初始化DataGrid編輯文本框.
    _cellEditBase.Parent = dagRanges;
    _cellEditBase.Visible = false;
    _cellEditBase.LostFocus += new EventHandler(_cellEditBase_LostFocus);
    _cellEditBase.TextChanged += new EventHandler(_cellEditBase_TextChanged);
    _cellEditBase.GotFocus += new EventHandler(_cellEditBase_GotFocus);
     }

private void _cellEditBase_GotFocus(object sender, EventArgs e)
{
        _cellEditBase.SelectAll();
      }

private void _cellEditBase_TextChanged(object sender, EventArgs e)
{
    try
    
{
        dagRange[_bindCellBase.RowNumber, _bindCellBase.ColumnNumber] = _cellEditBase.Text;
    }
    catch
    
{
        //TODO: hack the format exception.
       }
}

private void _cellEditBase_LostFocus(object sender, EventArgs e)
{
    _cellEditBase.Visible = false;
     }

//
處理DataGridCurrentCellChanged事件,以顯示文本編輯框.
private void dagRanges_CurrentCellChanged(object sender, EventArgs e)
{
    if (RangesTable.Columns[dagRanges.CurrentCell.ColumnNumber].ReadOnly)
    
{
        return;
    }
    _bindCellBase = dagRanges.CurrentCell;
    object objValue = dagRanges [_bindCellBase.RowNumber, _bindCellBase.ColumnNumber];
    string cellValue = string.Empty;
    if (objValue != null)
    
{
       cellValue = objValue.ToString();
    }
    _cellEditBase.Text = cellValue;
    _cellEditBase.Bounds = dagRanges.GetCellBounds(_bindCellBase.RowNumber, _bindCellBase.ColumnNumber);
    _cellEditBase.Visible = true;
    _cellEditBase.Focus();
}

 

 2. 修改datagrid的列寬

//設置datagride的列寬

            DataGridTableStyle tsMain = new DataGridTableStyle();

            YingYangGrid.TableStyles.Add(tsMain);

            tsMain.MappingName = yingyangTable.TableName;

 

            tsMain.GridColumnStyles[0].Width = 120;  //名稱列

            tsMain.GridColumnStyles[1].Width = 100;   //消化能列

            tsMain.GridColumnStyles[2].Width = 80;    //粗蛋白列

            tsMain.GridColumnStyles[3].Width = 60;     //鈣列

            tsMain.GridColumnStyles[4].Width = 60;      //磷列

            tsMain.GridColumnStyles[5].Width = 80;     //賴氨酸列

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章