欢迎光临
我们一直在努力

DataGrid相关知识总结(收集)-.NET教程,数据库应用

建站超值云服务器,限时71元/月

关于datagrid的问题,如何使行宽不可由用户更改。(即行宽固定,不能通过拖拉的方式改变)

定义datagrid的时候就把宽度设定

<asp:boundcolumn …> <headerstyle width="150px"></headerstyle>

如何在winform中datagrid点击某行,使数据实时显示在textbox中?

datagrid的keypress事件中

textbox1.text=mydatagrid(mydatagrid.currentcell.rownumber,0)

textbox2.text=mydatagrid(mydatagrid.currentcell.rownumber,1)

……..

以此类推

namespace datagriddoubleclick

{

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

public class form1 : system.windows.forms.form

{

private system.windows.forms.datagrid datagrid1;

private dataset mydataset;

datetime gridmousedowntime;

private system.windows.forms.label label1;

private system.componentmodel.container components = null;

public form1()

{

initializecomponent();

gridmousedowntime = datetime.now;

setup();

}

private void setup()

{

// 用2个table和1和relation创建dataset

makedataset();

// 数据绑定

datagrid1.setdatabinding(mydataset, "customers");

//添加样式

addcustomdatatablestyle();

}

private void makedataset()

{

// 创建dataset.

mydataset = new dataset("mydataset");

// 创建2个datatables.

datatable tcust = new datatable("customers");

// 创建两个列,并添加到第一个表

datacolumn ccustid = new datacolumn("custid");

datacolumn ccustname = new datacolumn("custname");

datacolumn ccurrent = new datacolumn("custcity");

tcust.columns.add(ccustid);

tcust.columns.add(ccustname);

tcust.columns.add(ccurrent);

// 把tables添加到dataset.

mydataset.tables.add(tcust);

/* 计算tables.对每个客户,创建datarow变量 */

datarow newrow1;

// 添加记录到 customers table.

for(int i = 1; i < 4; i++)

{

newrow1 = tcust.newrow();

newrow1["custid"] = (100*i).tostring();

tcust.rows.add(newrow1);

}

tcust.rows[0]["custname"] = "【孟宪会之精彩世界】";

tcust.rows[1]["custname"] = "net_lover";

tcust.rows[2]["custname"] = "http://xml.sz.luohuedu.net/";

tcust.rows[0]["custcity"] = "北京";

tcust.rows[1]["custcity"] = "上海";

tcust.rows[2]["custcity"] = "河南";

}

private void addcustomdatatablestyle()

{

datagridtablestyle ts1 = new datagridtablestyle();

ts1.mappingname = "customers";

// 设置属性

ts1.alternatingbackcolor = color.lightgray;

// 添加textbox列样式,以便我们捕捉鼠标事件

datagridtextboxcolumn textcol = new datagridtextboxcolumn();

textcol.mappingname = "custid";

textcol.headertext = "序号";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custname";

textcol.headertext = "姓名";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custcity";

textcol.headertext = "地址";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

datagrid1.tablestyles.add(ts1);

}

protected override void dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}

#region windows form designer generated code

private void initializecomponent()

{

this.datagrid1 = new system.windows.forms.datagrid();

this.label1 = new system.windows.forms.label();

((system.componentmodel.isupportinitialize)(this.datagrid1)).begininit();

this.suspendlayout();

//

// datagrid1

//

this.datagrid1.captionbackcolor = system.drawing.systemcolors.info;

this.datagrid1.captionforecolor = system.drawing.systemcolors.windowtext;

this.datagrid1.captionvisible = false;

this.datagrid1.datamember = "";

this.datagrid1.headerforecolor = system.drawing.systemcolors.controltext;

this.datagrid1.location = new system.drawing.point(11, 9);

this.datagrid1.name = "datagrid1";

this.datagrid1.size = new system.drawing.size(368, 144);

this.datagrid1.tabindex = 0;

this.datagrid1.mousedown += new system.windows.forms.mouseeventhandler(this.datagrid1_mousedown);

//

// label1

//

this.label1.location = new system.drawing.point(4, 166);

this.label1.name = "label1";

this.label1.size = new system.drawing.size(383, 23);

this.label1.tabindex = 1;

this.label1.textalign = system.drawing.contentalignment.middlecenter;

this.label1.click += new system.eventhandler(this.form1_click);

//

// form1

//

this.autoscalebasesize = new system.drawing.size(5, 13);

this.clientsize = new system.drawing.size(387, 201);

this.controls.addrange(new system.windows.forms.control[] {

this.label1,

this.datagrid1});

this.name = "form1";

this.text = "鼠标双击事件的例子";

((system.componentmodel.isupportinitialize)(this.datagrid1)).endinit();

this.resumelayout(false);

}

#endregion

[stathread]

static void main()

{

application.run(new form1());

}

private void textboxdoubleclickhandler(object sender, eventargs e)

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

private void textboxmousedownhandler(object sender, mouseeventargs e)

{

if(datetime.now < gridmousedowntime.addmilliseconds(systeminformation.doubleclicktime))

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

label1.text = "textbox 鼠标按下了。 ";

}

private void datagrid1_mousedown(object sender, system.windows.forms.mouseeventargs e)

{

gridmousedowntime = datetime.now;

label1.text = "datagrid1 鼠标按下了。 ";

}

private void form1_click(object sender, system.eventargs e)

{

label1.text="";

}

private void label1_click(object sender, system.eventargs e)

{

label1.text="";

}

}

this.mydatagrid.currentcellchanged += new

system.eventhandler(this.mydatagrid_currentcellchanged);

///////////////////////

private void mydatagrid_currentcellchanged(object sender,

system.eventargs e)

{

textbox1.text = "col is " + mydatagrid.currentcell.columnnumber

+ ", row is " + mydatagrid.currentcell.rownumber

+ ", value is " + mydatagrid[mydatagrid.currentcell];

}

把 dscustomers1和customers换成你的

private void datagrid1_click(object sender, system.eventargs e)

{

textbox1.bindingcontex[this.dscustomers1,"customers"].position=datagrid1.bindingcontext[this.dscustomers1.customers].position;

}

datagrid的curserchange事件中

textbox1.text=mydatagrid(mydatagrid.currentcell.rownumber,0)

textbox2.text=mydatagrid(mydatagrid.currentcell.rownumber,1)

……..

以此类推

textbox控件绑定dataset就行了

textbox1.databindings.add(new binding("text", ds, "customers.custname"));

在datagrid的tablesytle属性中设datagridtablestyle(mappingname为表名),再在其中按你要的次序加入自定义的datagridtextboxcolumn(mappingname为字段名).每个datagridtextboxcolumn可以独立设定宽度,。

在winforms datagrid中

1。如何实现行交替变色

2。如何加入链接(例如在 datagrid里放了订单表 ,想点击行中的任何列 可以弹出一个新的form ,放这个订单的—- 用户信息)

3。如何批量删除datagrid里的信息(用了checkbox

datagridtablestyle ts1 = new datagridtablestyle();

datagrid1.datasource = atable;

// specify the table from dataset (required step)

ts1.mappingname = "a";

// set other properties (optional step)

ts1.alternatingbackcolor = color.lightblue;

//ts1.allowsorting = false;

ts1.backcolor = color.cyan;

datagrid1.tablestyles.add(ts1);

ts1.gridcolumnstyles[0].width = 200;

ts1.datagrid.refresh();

你的第一個問題我給一個例子給你:

datagrid 的樣式表(datagridtablestyle)應用…

首先 我們先定一個 datatable 和 一個datarow

private idtb_temp as new datatable

private idrw_row as datarow

private sub getdatatable()

idtb_temp.columns.add("prdodr_subodr_code") 定義datatable 的列名

idtb_temp.tablename = "searchtable"

dim ldcl_header as windows.forms.datagridtextboxcolumn

dim ldgts_styles as new windows.forms.datagridtablestyle

ldgts_styles.selectionforecolor = system.drawing.color.yellow

選中行的前景色,即字體顏色

ldgts_styles.selectionbackcolor = system.drawing.color.brown 選中行的背景色

ldgts_styles.forecolor = system.drawing.color.coral

datagrid 中將要顯示的字的顏色

ldgts_styles.alternatingbackcolor = system.drawing.color.cyan

datagrid中奇數行所顯示的顏色

ldgts_styles.backcolor = system.drawing.color.cyan

datagrid中偶數行所顯示的顏色

ldgts_styles.allowsorting = false

些樣式表定義datagrid不允許自動排序..

ldgts_styles.mappingname = "searchtable"

ldcl_header = new windows.forms.datagridtextboxcolumn

實例化一個datagridtextboxcolumn

ldcl_header.mappingname = "prdodr_subodr_code"

引用前面定義的 “列名”

ldcl_header.headertext = "第一列"

datagrid 中顯示的 表列頭 文字

ldcl_header.readonly = true 些列設定為只讀

ldcl_header.textbox.borderstyle = borderstyle.fixed3d

ldcl_header.textbox.forecolor = system.drawing.color.red

ldgts_styles.gridcolumnstyles.add(ldcl_header)

for i as integer = 0 to 7

idrw_row = idtb_temp.newrow

idrw_row.item("prdodr_subodr_code") = "第" & i & "行"

idtb_temp.rows.add(idrw_row)

next

idtb_temp.defaultview.allownew = false

me.datagrid1.tablestyles.add(ldgts_styles)

me.datagrid1.datasource = idtb_temp

end sub

第三問題:看我的blog

在datagrid 中使用checkbox, combobxo 和 datetimepicker

http://blog.csdn.net/zwxrain/archive/2005/01/19/258998.aspx

1.在为datagrid设置了数据源datasource后,可添加datagridtablestyle,然后设置其alternatingbackcolor属性和backcolor属性就是交替行的颜色了

主  题: datagrid 中间单元格点击触发事件是什么?

private void datagrid1_mouseup(object sender, system.windows.forms.mouseeventargs e)

{

system.drawing.point pt = new point(e.x, e.y);

datagrid.hittestinfo hti = datagrid1.hittest(pt);

if(hti.type == datagrid.hittesttype.cell)

{

datagrid1.currentcell = new datagridcell(hti.row, hti.column);

datagrid1.select(hti.row);

}

}

1.分页;用属性生成器分页后,上页 下页 和页码的click代码该怎么写?

2.编辑;编辑功能该如何的实现。

自己看msdn,看的没头绪,向各位高手请教点思路。多谢!!

分页:

public void dg_pageindexchanged(object source, system.web.ui.webcontrols.datagridpagechangedeventargs e)

{

mydatagrid.currentpageindex = e.newpageindex;

binddata();

}

编辑:

public void edit(object sender,datagridcommandeventargs e)

{

type_dg.edititemindex=e.item.itemindex;

binddata();

}

public void update(object sender,datagridcommandeventargs e)

{

textbox id=(textbox)e.item.cells[0].controls[0];

textbox name=(textbox)e.item.cells[1].controls[0];

textbox num=(textbox)e.item.cells[2].controls[0];

string update_oledb="update blog_type set b_type_name="+name.text+",b_type_num="+num.text+" where id="+id.text+"";

oledbconnection myconn=new oledbconnection(application["strconn"].tostring());

myconn.open();

oledbcommand update_com=new oledbcommand(update_oledb,myconn);

update_com.executenonquery();

type_dg.edititemindex=-1;

myconn.close();

binddata();

}

public void cancel(object sender,datagridcommandeventargs e)

{

type_dg.edititemindex=-1;

binddata();

}

删除:

public void delete(object sender,datagridcommandeventargs e)

{

string no=type_dg.items[e.item.itemindex].cells[0].text;

oledbconnection myconn=new oledbconnection(application["strconn"].tostring());

myconn.open();

string deleteoledb="delete from blog_type where id="+no;

oledbcommand deletecom=new oledbcommand(deleteoledb,myconn);

deletecom.executenonquery();

myconn.close();

binddata();

}

在winform的datagrid中如何更改列的标题和设置列内容。

表:

id name strdate enddate

1 a 2004/2/1 2005/2/1

要求显示出来

名称 开始日期 结束日期 逾期(是/否)

a 2004/2/1 2005/2/1 逾期365天

谢谢!

private void form1_load(object sender, system.eventargs e)

{

sqlconnection cs = new sqlconnection("server=mengxianhui;database=sqlpub2;user id=sa;password=");

sqldataadapter mycommand = new sqldataadapter("select lastmodified,objectid from baseobject", cs);

dataset mydataset = new dataset();

mycommand.fill(mydataset, "baseobject");

this.datagrid1.datasource = mydataset.tables[0];

//设置datagrid的各列

datagridtextboxcolumn c1=new datagridtextboxcolumn();

datagridtextboxcolumn c2=new datagridtextboxcolumn();

c1.mappingname = "lastmodified";

c2.mappingname = "objectid";

c1.headertext="时间【你好,夏威夷】";

c2.headertext="标号";

c1.format="yyyy年mm月dd日";

c1.width = 200;

datagridtablestyle dts=new datagridtablestyle();

dts.gridcolumnstyles.add(c1);

dts.gridcolumnstyles.add(c2);

dts.mappingname="baseobject";

this.datagrid1.tablestyles.add(dts);

}

主  题: datagrid+checkboxlist应用问题

你可以添加一个模板列,然后对模板列进行编辑,加入一个checkbox和一个checkboxlist,然后命名这两个控件,在code加入checkbox1_checkedchanged事件,把checkbox的auto postback设置为true,再在

checkbox1_checkedchanged事件写你所要实现的功能。

下面是一个简单例子,删除datagrid当前行数据:(前面数据已经绑定到datagrid1了)

string strsql = "delete from table1 where id=@id";

string text = datagrid1[datagrid1.currentcell.rownumber, 0].tostring();

testdataset1.table1.rows[datagrid1.currentcell.rownumber].delete();

testdataset1.acceptchanges();

sqldataadapter2.deletecommand.parameters["@id"].value = text;

sqldataadapter2.deletecommand.connection.open();

sqldataadapter2.deletecommand.executenonquery();

sqldataadapter2.deletecommand.connection.close();

主  题: 请教在datagridview中怎样生成自适应的列宽?

自适应 列宽:

控制dategrid列宽度函数

public sub sizecolumnstocontent(byval datagrid as datagrid, byval nrowstoscan as integer)

dim graphics as graphics = datagrid.creategraphics()

dim tablestyle as datagridtablestyle = new datagridtablestyle

try

dim datatable as datatable = ctype(datagrid.datasource, datatable)

if -1 = nrowstoscan then

nrowstoscan = datatable.rows.count

else

nrowstoscan = system.math.min(nrowstoscan, datatable.rows.count)

end if

datagrid.tablestyles.clear()

tablestyle.mappingname = datatable.tablename

dim columnstyle as datagridtextboxcolumn

dim iwidth as integer

for icurrcol as integer = 0 to datatable.columns.count – 1

dim datacolumn as datacolumn = datatable.columns(icurrcol)

columnstyle = new datagridtextboxcolumn

columnstyle.textbox.enabled = true

columnstyle.headertext = datacolumn.columnname

columnstyle.mappingname = datacolumn.columnname

iwidth = cint(graphics.measurestring(columnstyle.headertext, datagrid.font).width)

dim datarow as datarow

for irow as integer = 0 to nrowstoscan – 1

datarow = datatable.rows(irow)

if datarow(datacolumn.columnname) <> nothing then

dim icolwidth as integer = cint(graphics.measurestring(datarow.itemarray(icurrcol).tostring(), datagrid.font).width)

dim icolhight as integer = cint(graphics.measurestring(datarow.itemarray(icurrcol).tostring(), datagrid.font).height)

iwidth = cint(system.math.max(iwidth, icolwidth))

end if

next

columnstyle.width = iwidth + 10

tablestyle.gridcolumnstyles.add(columnstyle)

next

datagrid.tablestyles.add(tablestyle)

catch ex as exception

messagebox.show(ex.message)

finally

graphics.dispose()

end try

end sub

主  题: winform中隐藏datagrid中的一列,有简单的方法吗?

我也是用datagrid.tablestyles[table].gridcolumnstyles[0].width = 0;这么做的.应该是没有其他的方法了

主  题: winform里面怎么捕获datagrid的双击事件阿?

namespace datagriddoubleclick

{

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

public class form1 : system.windows.forms.form

{

private system.windows.forms.datagrid datagrid1;

private dataset mydataset;

datetime gridmousedowntime;

private system.windows.forms.label label1;

private system.componentmodel.container components = null;

public form1()

{

initializecomponent();

gridmousedowntime = datetime.now;

setup();

}

private void setup()

{

// 用2个table和1和relation创建dataset

makedataset();

// 数据绑定

datagrid1.setdatabinding(mydataset, "customers");

//添加样式

addcustomdatatablestyle();

}

private void makedataset()

{

// 创建dataset.

mydataset = new dataset("mydataset");

// 创建2个datatables.

datatable tcust = new datatable("customers");

// 创建两个列,并添加到第一个表

datacolumn ccustid = new datacolumn("custid");

datacolumn ccustname = new datacolumn("custname");

datacolumn ccurrent = new datacolumn("custcity");

tcust.columns.add(ccustid);

tcust.columns.add(ccustname);

tcust.columns.add(ccurrent);

// 把tables添加到dataset.

mydataset.tables.add(tcust);

/* 计算tables.对每个客户,创建datarow变量 */

datarow newrow1;

// 添加记录到 customers table.

for(int i = 1; i < 4; i++)

{

newrow1 = tcust.newrow();

newrow1["custid"] = (100*i).tostring();

tcust.rows.add(newrow1);

}

tcust.rows[0]["custname"] = "【孟宪会之精彩世界】";

tcust.rows[1]["custname"] = "net_lover";

tcust.rows[2]["custname"] = "http://xml.sz.luohuedu.net/";

tcust.rows[0]["custcity"] = "北京";

tcust.rows[1]["custcity"] = "上海";

tcust.rows[2]["custcity"] = "河南";

}

private void addcustomdatatablestyle()

{

datagridtablestyle ts1 = new datagridtablestyle();

ts1.mappingname = "customers";

// 设置属性

ts1.alternatingbackcolor = color.lightgray;

// 添加textbox列样式,以便我们捕捉鼠标事件

datagridtextboxcolumn textcol = new datagridtextboxcolumn();

textcol.mappingname = "custid";

textcol.headertext = "序号";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custname";

textcol.headertext = "姓名";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custcity";

textcol.headertext = "地址";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

datagrid1.tablestyles.add(ts1);

}

protected override void dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}

#region windows form designer generated code

private void initializecomponent()

{

this.datagrid1 = new system.windows.forms.datagrid();

this.label1 = new system.windows.forms.label();

((system.componentmodel.isupportinitialize)(this.datagrid1)).begininit();

this.suspendlayout();

//

// datagrid1

//

this.datagrid1.captionbackcolor = system.drawing.systemcolors.info;

this.datagrid1.captionforecolor = system.drawing.systemcolors.windowtext;

this.datagrid1.captionvisible = false;

this.datagrid1.datamember = "";

this.datagrid1.headerforecolor = system.drawing.systemcolors.controltext;

this.datagrid1.location = new system.drawing.point(11, 9);

this.datagrid1.name = "datagrid1";

this.datagrid1.size = new system.drawing.size(368, 144);

this.datagrid1.tabindex = 0;

this.datagrid1.mousedown += new system.windows.forms.mouseeventhandler(this.datagrid1_mousedown);

//

// label1

//

this.label1.location = new system.drawing.point(4, 166);

this.label1.name = "label1";

this.label1.size = new system.drawing.size(383, 23);

this.label1.tabindex = 1;

this.label1.textalign = system.drawing.contentalignment.middlecenter;

this.label1.click += new system.eventhandler(this.form1_click);

//

// form1

//

this.autoscalebasesize = new system.drawing.size(5, 13);

this.clientsize = new system.drawing.size(387, 201);

this.controls.addrange(new system.windows.forms.control[] {

this.label1,

this.datagrid1});

this.name = "form1";

this.text = "鼠标双击事件的例子";

((system.componentmodel.isupportinitialize)(this.datagrid1)).endinit();

this.resumelayout(false);

}

#endregion

[stathread]

static void main()

{

application.run(new form1());

}

private void textboxdoubleclickhandler(object sender, eventargs e)

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

private void textboxmousedownhandler(object sender, mouseeventargs e)

{

if(datetime.now < gridmousedowntime.addmilliseconds(systeminformation.doubleclicktime))

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

label1.text = "textbox 鼠标按下了。 ";

}

private void datagrid1_mousedown(object sender, system.windows.forms.mouseeventargs e)

{

gridmousedowntime = datetime.now;

label1.text = "datagrid1 鼠标按下了。 ";

}

private void form1_click(object sender, system.eventargs e)

{

label1.text="";

}

private void label1_click(object sender, system.eventargs e)

{

label1.text="";

}

}

}

namespace datagriddoubleclick

{

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

public class form1 : system.windows.forms.form

{

private system.windows.forms.datagrid datagrid1;

private dataset mydataset;

datetime gridmousedowntime;

private system.windows.forms.label label1;

private system.componentmodel.container components = null;

public form1()

{

initializecomponent();

gridmousedowntime = datetime.now;

setup();

}

private void setup()

{

// 用2个table和1和relation创建dataset

makedataset();

// 数据绑定

datagrid1.setdatabinding(mydataset, "customers");

//添加样式

addcustomdatatablestyle();

}

private void makedataset()

{

// 创建dataset.

mydataset = new dataset("mydataset");

// 创建2个datatables.

datatable tcust = new datatable("customers");

// 创建两个列,并添加到第一个表

datacolumn ccustid = new datacolumn("custid");

datacolumn ccustname = new datacolumn("custname");

datacolumn ccurrent = new datacolumn("custcity");

tcust.columns.add(ccustid);

tcust.columns.add(ccustname);

tcust.columns.add(ccurrent);

// 把tables添加到dataset.

mydataset.tables.add(tcust);

/* 计算tables.对每个客户,创建datarow变量 */

datarow newrow1;

// 添加记录到 customers table.

for(int i = 1; i < 4; i++)

{

newrow1 = tcust.newrow();

newrow1["custid"] = (100*i).tostring();

tcust.rows.add(newrow1);

}

tcust.rows[0]["custname"] = "【孟宪会之精彩世界】";

tcust.rows[1]["custname"] = "net_lover";

tcust.rows[2]["custname"] = "http://xml.sz.luohuedu.net/";

tcust.rows[0]["custcity"] = "北京";

tcust.rows[1]["custcity"] = "上海";

tcust.rows[2]["custcity"] = "河南";

}

private void addcustomdatatablestyle()

{

datagridtablestyle ts1 = new datagridtablestyle();

ts1.mappingname = "customers";

// 设置属性

ts1.alternatingbackcolor = color.lightgray;

// 添加textbox列样式,以便我们捕捉鼠标事件

datagridtextboxcolumn textcol = new datagridtextboxcolumn();

textcol.mappingname = "custid";

textcol.headertext = "序号";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custname";

textcol.headertext = "姓名";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

textcol = new datagridtextboxcolumn();

textcol.mappingname = "custcity";

textcol.headertext = "地址";

textcol.width = 100;

//添加事件处理器

textcol.textbox.mousedown += new mouseeventhandler(textboxmousedownhandler);

textcol.textbox.doubleclick += new eventhandler(textboxdoubleclickhandler);

ts1.gridcolumnstyles.add(textcol);

datagrid1.tablestyles.add(ts1);

}

protected override void dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}

#region windows form designer generated code

private void initializecomponent()

{

this.datagrid1 = new system.windows.forms.datagrid();

this.label1 = new system.windows.forms.label();

((system.componentmodel.isupportinitialize)(this.datagrid1)).begininit();

this.suspendlayout();

//

// datagrid1

//

this.datagrid1.captionbackcolor = system.drawing.systemcolors.info;

this.datagrid1.captionforecolor = system.drawing.systemcolors.windowtext;

this.datagrid1.captionvisible = false;

this.datagrid1.datamember = "";

this.datagrid1.headerforecolor = system.drawing.systemcolors.controltext;

this.datagrid1.location = new system.drawing.point(11, 9);

this.datagrid1.name = "datagrid1";

this.datagrid1.size = new system.drawing.size(368, 144);

this.datagrid1.tabindex = 0;

this.datagrid1.mousedown += new system.windows.forms.mouseeventhandler(this.datagrid1_mousedown);

//

// label1

//

this.label1.location = new system.drawing.point(4, 166);

this.label1.name = "label1";

this.label1.size = new system.drawing.size(383, 23);

this.label1.tabindex = 1;

this.label1.textalign = system.drawing.contentalignment.middlecenter;

this.label1.click += new system.eventhandler(this.form1_click);

//

// form1

//

this.autoscalebasesize = new system.drawing.size(5, 13);

this.clientsize = new system.drawing.size(387, 201);

this.controls.addrange(new system.windows.forms.control[] {

this.label1,

this.datagrid1});

this.name = "form1";

this.text = "鼠标双击事件的例子";

((system.componentmodel.isupportinitialize)(this.datagrid1)).endinit();

this.resumelayout(false);

}

#endregion

[stathread]

static void main()

{

application.run(new form1());

}

private void textboxdoubleclickhandler(object sender, eventargs e)

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

private void textboxmousedownhandler(object sender, mouseeventargs e)

{

if(datetime.now < gridmousedowntime.addmilliseconds(systeminformation.doubleclicktime))

{

messagebox.show("双击事件发生。鼠标双击到的值:"+((textbox)sender).text.tostring());

}

label1.text = "textbox 鼠标按下了。 ";

}

private void datagrid1_mousedown(object sender, system.windows.forms.mouseeventargs e)

{

gridmousedowntime = datetime.now;

label1.text = "datagrid1 鼠标按下了。 ";

}

private void form1_click(object sender, system.eventargs e)

{

label1.text="";

}

private void label1_click(object sender, system.eventargs e)

{

label1.text="";

}

}

}

主  题: 在c#(winform)中如何设置datagrid某一行的背景色,或字体的颜色啊?高手救命!!

using system;

using system.drawing;

using system.collections;

using system.componentmodel;

using system.windows.forms;

using system.data;

namespace datagridcellformatting

{

/// <summary>

/// form2 的摘要说明。

/// </summary>

public class form2 : system.windows.forms.form

{

private system.windows.forms.datagrid datagrid1;

/// <summary>

/// 必需的设计器变量。

/// </summary>

private system.componentmodel.container components = null;

public form2()

{

//

// windows 窗体设计器支持所必需的

//

initializecomponent();

//

// todo: 在 initializecomponent 调用后添加任何构造函数代码

//

}

/// <summary>

/// 清理所有正在使用的资源。

/// </summary>

protected override void dispose( bool disposing )

{

if( disposing )

{

if(components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}

#region windows 窗体设计器生成的代码

/// <summary>

/// 设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void initializecomponent()

{

this.datagrid1 = new system.windows.forms.datagrid();

((system.componentmodel.isupportinitialize)(this.datagrid1)).begininit();

this.suspendlayout();

//

// datagrid1

//

this.datagrid1.datamember = "";

this.datagrid1.headerforecolor = system.drawing.systemcolors.controltext;

this.datagrid1.location = new system.drawing.point(8, 56);

this.datagrid1.name = "datagrid1";

this.datagrid1.size = new system.drawing.size(536, 296);

this.datagrid1.tabindex = 0;

this.datagrid1.navigate += new system.windows.forms.navigateeventhandler(this.datagrid1_navigate);

//

// form2

//

this.autoscalebasesize = new system.drawing.size(6, 14);

this.clientsize = new system.drawing.size(560, 389);

this.controls.add(this.datagrid1);

this.name = "form2";

this.text = "form2";

this.load += new system.eventhandler(this.form2_load);

((system.componentmodel.isupportinitialize)(this.datagrid1)).endinit();

this.resumelayout(false);

}

#endregion

private void formatgridcells(object sender, datagridformatcelleventargs e)

{

//color row 1 red

if(e.row == 0)

e.backbrush = brushes.red;

if(e.row == 1)

e.backbrush = brushes.red;

if(e.row == 2)

e.backbrush = brushes.red;

if(e.row == 3)

e.backbrush = brushes.red;

//color column 4 blue

//if(e.column == 4)

//e.backbrush = brushes.blue;

//

////set font of some cells to bold

//if( (e.row + e.column) % 5 == 0 )

//e.textfont = new font(e.textfont.name, e.textfont.size, fontstyle.bold);

//

////set textcolor of some cells to blue

//if( (e.row + e.column) % 8 == 0 )

//e.forebrush = brushes.dodgerblue;

//

////set font of some cells to bold, underline, italic with white text on green background

//if( (e.row + e.column) % 9 == 0 )

//{

//e.textfont = new font(e.textfont.name, e.textfont.size, fontstyle.bold | fontstyle.italic | fontstyle.underline);

//e.forebrush = brushes.white;

//e.backbrush = brushes.green;

//}

}

private datatable somedatatable()

{

datatable dt = new datatable("mytable");

//add some columns

int ncols = 10;

for(int j = 0; j < ncols; ++j)

dt.columns.add(new datacolumn(string.format("col{0}", j), typeof(string)));

//add some rows

int nrows = 40;

for(int i = 0; i < nrows; ++i)

{

datarow dr = dt.newrow();

for(int j = 0; j < ncols; ++j)

dr[j] = string.format("row {0} col {1}", i, j);

dt.rows.add(dr);

}

dt.defaultview.allownew = false;//turn off append row

return dt;

}

private void addcellformattingcolumnstyles(datagrid grid, formatcelleventhandler handler)

{

datagridtablestyle ts = new datagridtablestyle();

datatable dt = (datatable) grid.datasource;

ts.mappingname = dt.tablename;

for(int j = 0; j < dt.columns.count; ++j)

{

datagridformattabletextboxcolumn cs = new datagridformattabletextboxcolumn(j);

cs.mappingname = dt.columns[j].columnname;

cs.headertext = dt.columns[j].columnname;

cs.setcellformat += handler;

ts.gridcolumnstyles.add(cs);

}

grid.tablestyles.clear();

grid.tablestyles.add(ts);

}

private void datagrid1_navigate(object sender, system.windows.forms.navigateeventargs ne)

{

}

private void form2_load(object sender, system.eventargs e)

{

this.datagrid1.datasource = somedatatable();

addcellformattingcolumnstyles(this.datagrid1, new formatcelleventhandler(formatgridcells));

}

public delegate void formatcelleventhandler(object sender, datagridformatcelleventargs e);

public class datagridformatcelleventargs : eventargs

{

private int _column;

private int _row;

private font _font;

private brush _backbrush;

private brush _forebrush;

private bool _usebaseclassdrawing;

public datagridformatcelleventargs(int row, int col, font font1, brush backbrush, brush forebrush)

{

_row = row;

_column = col;

_font = font1;

_backbrush = backbrush;

_forebrush = forebrush;

_usebaseclassdrawing = false;

}

public int column

{

get{ return _column;}

set{ _column = value;}

}

public int row

{

get{ return _row;}

set{ _row = value;}

}

public font textfont

{

get{ return _font;}

set{ _font = value;}

}

public brush backbrush

{

get{ return _backbrush;}

set{ _backbrush = value;}

}

public brush forebrush

{

get{ return _forebrush;}

set{ _forebrush = value;}

}

public bool usebaseclassdrawing

{

get{ return _usebaseclassdrawing;}

set{ _usebaseclassdrawing = value;}

}

}

public class datagridformattabletextboxcolumn : datagridtextboxcolumn

{

//in your handler, set the enablevalue to true or false, depending upon the row & col

public event formatcelleventhandler setcellformat;

private int _col;

public datagridformattabletextboxcolumn(int col)

{

_col = col;

}

protected override void paint(system.drawing.graphics g, system.drawing.rectangle bounds, system.windows.forms.currencymanager source, int rownum, system.drawing.brush backbrush, system.drawing.brush forebrush, bool aligntoright)

{

datagridformatcelleventargs e = new datagridformatcelleventargs(rownum, this._col, this.datagridtablestyle.datagrid.font, backbrush, forebrush);

if(setcellformat != null)

{

setcellformat(this, e);

}

if(e.usebaseclassdrawing)

base.paint(g, bounds, source, rownum, backbrush, forebrush, aligntoright);

else

{

g.fillrectangle(e.backbrush, bounds);

g.drawstring(this.getcolumnvalueatrow(source, rownum).tostring(), e.textfont, e.forebrush, bounds.x, bounds.y);

}

if(e.textfont != this.datagridtablestyle.datagrid.font)

e.textfont.dispose();

}

protected override void edit(system.windows.forms.currencymanager source, int rownum, system.drawing.rectangle bounds, bool readonly, string instanttext, bool cellisvisible)

{

//comment to make cells unable to become editable

base.edit(source, rownum, bounds, readonly, instanttext, cellisvisible);

}

}

}

}

只需要改变formatgridcells中的行就行了

主  题: 如何让winform的datagrid控件的列有的为只读属性,有的不是只读属性

1、手工:datagrid->属性->tablestyles->gridcoumnstyles

2、代码:this.datagrid1.tablestyles["tablename"].gridcolumnstyles["id"].readonly = true;

this.datagrid1.tablestyles["tablename"].gridcolumnstyles["id"].readonly = true;

显示和隐藏datagrid中的列

<%@ page language="vb" autoeventwireup="false" codebehind="showhidecols.aspx.vb"

inherits="aspxweb.showhidecols"%>

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

<head>

<title>showhidecols</title>

<meta name="generator" content="microsoft visual studio.net 7.0">

<meta name="code_language" content="visual basic 7.0">

<meta name="vs_defaultclientscript" content="javascript">

<meta name="vs_targetschema" content="http://schemas.microsoft.com/intellisense/ie5">

</head>

<body ms_positioning="gridlayout">

<form id="form1" method="post" runat="server">

<asp:button id="btnshow" text="show details" onclick="showdetails" runat="server" />

<asp:button id="btnhide" text="hide details" onclick="hidedetails" runat="server" />

<asp:datagrid id="dtgcusts" runat="server" autogeneratecolumns="false"

bordercolor="#999999" borderstyle="none" borderwidth="1px" backcolor="white"

cellpadding="3" gridlines="vertical">

<columns>

<asp:boundcolumn datafield="title" />

<asp:boundcolumn datafield="id" visible="false" />

<asp:boundcolumn datafield="createdate" dataformatstring="{0:yyyy-mm-dd hh:mm:ss}"

visible="false" />

<asp:editcommandcolumn edittext="edit" headertext="edit" visible="false" />

</columns>

<alternatingitemstyle backcolor="#dcdcdc" />

<itemstyle forecolor="black" backcolor="#eeeeee" />

<headerstyle font-bold="true" forecolor="white" backcolor="#000084" />

</asp:datagrid>

</form>

</body>

</html>

imports system.data

imports system.data.oledb

public class showhidecols

inherits system.web.ui.page

protected withevents btnshow as system.web.ui.webcontrols.button

protected withevents btnhide as system.web.ui.webcontrols.button

protected withevents dtgcusts as system.web.ui.webcontrols.datagrid

#region " web 窗体设计器生成的代码 "

该调用是 web 窗体设计器所必需的。

<system.diagnostics.debuggerstepthrough()> private sub initializecomponent()

end sub

private sub page_init(byval sender as system.object, byval e as system.eventargs)_

handles mybase.init

codegen: 此方法调用是 web 窗体设计器所必需的

不要使用代码编辑器修改它。

initializecomponent()

end sub

#end region

private sub page_load(byval sender as system.object, byval e as system.eventargs)_

handles mybase.load

在此处放置初始化页的用户代码

btnshow.text = "显示列"

btnhide.text = "隐藏列"

dtgcusts.columns(1).headertext = ""

dtgcusts.columns(0).headertext = "标题"

dtgcusts.columns(2).headertext = "发布日期"

dtgcusts.columns(3).headertext = "编辑"

if not ispostback then

bindthedata()

end if

end sub

sub bindthedata()

dim objconn as oledbconnection

dim objcmd as oledbcommand

objconn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=" _

+ server.mappath("test.mdb"))

dim strsql as string

strsql = "select top 10 id,title,createdate from document"

objcmd = new oledbcommand(strsql, objconn)

objconn.open()

dtgcusts.datasource = objcmd.executereader()

dtgcusts.databind()

objconn.close()

objconn.dispose()

end sub

sub showdetails(byval sender as system.object, byval e as system.eventargs)

dim intcounter as integer

for intcounter = 1 to dtgcusts.columns.count – 1

dtgcusts.columns(intcounter).visible = true

next

end sub

sub hidedetails(byval sender as system.object, byval e as system.eventargs)

dim intcounter as integer

for intcounter = 1 to dtgcusts.columns.count – 1

dtgcusts.columns(intcounter).visible = false

next

end sub

end class

主  题: 请教在datagridview中怎样生成自适应的列宽?

你可以用下面的方法实现:

private void gridview1_mousemove(object sender, system.windows.forms.mouseeventargs e)

{

int a=e.x/colkeywords.width;

int b=(e.y+10)/colkeywords.width-3;

if(a>=0 && b>=0 && a<dataset11.tables["bugman"].columns.count && b<dataset11.tables["bugman"].rows.count)

tooltipcontroller1.settooltip(gridcontrol1,dataset11.tables["bugman"].rows[b].itemarray[a].tostring());

}

我用的是tooltip,colkeywords.width是某一个列的长度

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » DataGrid相关知识总结(收集)-.NET教程,数据库应用
分享到: 更多 (0)