本来对DataGrid行进行操作可以用e.items.cell[index],但今天经理说不能用index来进行查找,必须用绑定该列的字段名来查找,因为客户可能会要求交换列的顺序,这样不至于出错.
不知道怎么做了,希望能得到你们的帮助,谢谢了
不知道怎么做了,希望能得到你们的帮助,谢谢了
解决方案 »
- -----------关于两个dropdownlist省市联动
- 请教“服务器控件必须放在runat=server的窗体”的问题
- 大家打开下面的连接,他是如何实现的通过一个dll动态生成XML?
- 程序无法上传到服务器上,这是为什么,顶着给分!!
- 关于DataList显示多张图片的问题
- 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
- asp.net HttpRuntime.Cache里的值为什么会被更新。
- 高手帮忙啊---关于软件验证问题
- 把dll放在bin下,(vs.net下)为什么还要添加引用才能用?
- 在asp.net里,MsgBox函数怎么用?
- URL 编码解码的问题 求解@ @
- 关于证书问题,不知在那个子论坛问了,就在这里问一下吧!
谢谢
这个应该可以啊
DataControlFieldCell dcf = (DataControlFieldCell)lb.Parent;
GridViewRow gvr = (GridViewRow)dcf.Parent;
//gvr.RowIndex,得到当前行索引
string courseid2 = this.GridView1.Rows[gvr.RowIndex].Cells[0].Text;
其实目的是为了将e.item.cell[index]中的int型变量index换成datagrid数据源中的字段名,这样至少我没办法实现,所以想请教大家一个比较好的解决方法。也就是只要能通过字段名获取datagrid中的数据(当然牺牲太多性能的方法不行,已经被经理枪毙了),就成
{
DataRowView drv=(DataRowView)e.Item.DataItem;
string ss=drv["column"].ToString();
}
datagrid本身没有通过列名取值得功能,要用datatable或dataview来实现
所以需要找一个合适的解决方法,唉,头大了,谢谢大家
谢谢大家的支持
这里说下怎么做的:
首先建立一个hashtable,用一个for(i=0到count-1)循环遍历所有的邦定字段,也就是datagrid数据字段(模版列应该跳过),hashtable (myHT = new Hashtable())的key值存字段名,value值存i的值
这样,hashtable就会有一个对应关系,调用的时候
e.item.cell[Convert.ToInt32(myHT[你的key值])]
这里主要将index换成了Convert.ToInt32(myHT[你的key值]),所以,只要模版列在datagrid的最左边或者最右边,无论怎么调整绑定列的顺序,都可以通过字段名来获取数据,字段名也就是key值。
有点麻烦,但是还能用,大家有什么更好的方法可以拿出来讨论,结贴,是因为已经能实现功能了