首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Dotnetbar中的一个有关问题

2012-09-11 
Dotnetbar中的一个问题?最近在研究Dotnetbar,可是有一个问题让人很郁闷。直接拖拽一个DataGridViewX到窗体

Dotnetbar中的一个问题?
最近在研究Dotnetbar,可是有一个问题让人很郁闷。
直接拖拽一个DataGridViewX到窗体中,禁用DataGridViewX自带的 添加,删除,修改功能,后台写入下以下代码:
在最后一行中ButtonX的值总是不能显示,如果把 
DataGridViewButtonXColumn column3 = new DataGridViewButtonXColumn(); 替换成
DataGridViewButtonColumn column3 = new DataGridViewButtonColumn(); 就能显示。我真郁闷的要死。有谁用过这个,帮下忙了。我现在的目的是不要 添加,删除,修改的功能,只需要让这个DataGridViewX展示数据就够了。让他把最后一行的那个ButtonX的值显示上去!谢谢了。

C# code
        /// <summary>        /// 初始化实时DataGridViewX        /// </summary>        public void LoadFmMainRealTime(DataGridViewX dLvRealTime)        {            //            // 初始化列            //            DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn();            DataGridViewTextBoxColumn column2 = new DataGridViewTextBoxColumn();            DataGridViewButtonXColumn column3 = new DataGridViewButtonXColumn();            DataGridViewTextBoxColumn column4 = new DataGridViewTextBoxColumn();            column1.Width = 100;            column1.DataPropertyName = "bh";            column1.HeaderText = "编号";            column2.Width = 150;            column2.DataPropertyName = "zxshk";            column2.HeaderText = "执行时刻";            column3.Width = 250;            column3.HeaderText = "描述";            column3.DataPropertyName = "msh";            column4.Width = 524;            column4.Name = "info";            column4.DataPropertyName = "xx";            column4.HeaderText = "信息";            dLvRealTime.Columns.AddRange(new DataGridViewColumn[] { column1, column2, column3, column4 });            Rectangle ScreenArea = System.Windows.Forms.Screen.GetWorkingArea(dLvRealTime);            dLvRealTime.Columns["info"].Width = ScreenArea.Width - 570;            //            // 初始化数据            //            table = new DataTable("DemoTable");            table.Columns.Add(new DataColumn("bh") { DataType = System.Type.GetType("System.Int32") });            table.Columns.Add(new DataColumn("zxshk"));            table.Columns.Add(new DataColumn("msh"));            table.Columns.Add(new DataColumn("xx"));            for (int i = 0; i < 11; i++)            {                row = table.NewRow();                row[0] = i + 1;                row[1] = DateTime.Now.AddDays(i).ToString("yyy-MM-dd hh:mm:ss.fff");                if (i % 2 != 0)                    row[2] = "莱昂纳多进入";                else if (i % 2 == 0)                    row[2] = "莱昂纳多出去";                row[3] = "刷卡验证";                table.Rows.Add(row);            }            dataSet.Tables.Add(table);            bindingSource.DataMember = "DemoTable";            DataGridViewButtonXColumn bcx = dLvRealTime.Columns[2] as DataGridViewButtonXColumn;            if (bcx != null)            {                bcx.UseColumnTextForButtonValue = false;                bcx.BeforeCellPaint += Demo_BeforeCellPaint;            }        }        private void Demo_BeforeCellPaint(object sender, BeforeCellPaintEventArgs e)        {            DataGridViewButtonXColumn bcx = sender as DataGridViewButtonXColumn;            if (bcx != null)            {                if (bcx.Text == "莱昂纳多进入")                    bcx.Image = new Bitmap(Application.StartupPath + @"\Images\arrow_down.gif");                else if (bcx.Text == "莱昂纳多出去")                    bcx.Image = new Bitmap(Application.StartupPath + @"\Images\arrow_up.gif");            }        }


[解决办法]
DNB中没有DataGridViewButtonXColumn这样的列类型,是楼主自己新增的?
如果是,那么是你自己实现的问题.

如果你不是大量数据需要显示,建议使用DNB的AdvTree,这个控件的扩展性更好,更容易自定义.
------解决方案--------------------



[解决办法]
private void Demo_BeforeCellPaint(object sender, BeforeCellPaintEventArgs e)
{
DataGridViewButtonXColumn bcx = sender as DataGridViewButtonXColumn;
if (bcx != null)
{
if (bcx.Text.Contains("莱昂纳多进入"))
bcx.Image = new Bitmap(Application.StartupPath + @"\Images\arrow_down.gif");
else if (bcx.Text.Contains("莱昂纳多出去"))
bcx.Image = new Bitmap(Application.StartupPath + @"\Images\arrow_up.gif");
}
}

[解决办法]
,建议使用DNB的AdvTree

热点排行