1、想要达到的效果:GridView编辑数据时让表头显示为字段的中文注释方便用户修改其值(表的字段有90多个,都是英
文字段名),更新后表头还显示为字段的中文注释。说明:这里用GridView更新数据,SQLDataSource作为
GridView的DataSource,数据源是在程序中动态绑定,数据库是Oracle9i
2、刚开始我是这样做的:
数据编辑(RowEditing事件中) GridView1.EditIndex = e.NewEditIndex;
GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2"�%BPOST http://forum.csdn.net/PointForum/Forum/PostT��RowUpdating事件中):
SqlDataSource1.UpdateCommand = s3;
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataBind();
GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2";
但这样做编辑时、更新后表头显示的还是英文字段名,GridView1.HeaderRow.Cells[1].Text="中文注释
1"好象没起作用
3、后来我又改为下面的方法:
数据编辑(RowEditing事件中),数据绑定变为这样:
SqlDataSource1.ConnectionString = s2;
SqlDataSource1.SelectCommand = "select YTMC, BDND as 中文注释1, DZCL as 中文注释2 from
table1 where YTMC='YC1'"; //这里省略了N个字段
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataSet;
SqlDataSource1.DataBind();
下面这两句不要了:GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2";
这样数据编辑时表头显示的是中文注释
但是数据更新时出错:
s3 = "UPDATE table1 SET BDND=:BDND, DZCL=:DZCL where YTMC=:YTMC";
SqlDataSource1.UpdateCommand = s3;
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataBind(); 到这里就出错了,错误是:
执行当前 Web 请求期间生成了未处理的异常。堆栈跟踪:[OracleException (0x80131938): ORA-01036: 非法的变量名/编号
但如果我把数据编辑里的语句
qlDataSource1.SelectCommand = "select YTMC, BDND as 中文注释1, DZCL as 中文注释2";
改为: qlDataSource1.SelectCommand = "select * from table1 where YTMC='YC1'";
则不会出错,但是没有达到我的目的
请各位大虾不吝赐教!小妹这里先行谢过了!
文字段名),更新后表头还显示为字段的中文注释。说明:这里用GridView更新数据,SQLDataSource作为
GridView的DataSource,数据源是在程序中动态绑定,数据库是Oracle9i
2、刚开始我是这样做的:
数据编辑(RowEditing事件中) GridView1.EditIndex = e.NewEditIndex;
GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2"�%BPOST http://forum.csdn.net/PointForum/Forum/PostT��RowUpdating事件中):
SqlDataSource1.UpdateCommand = s3;
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataBind();
GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2";
但这样做编辑时、更新后表头显示的还是英文字段名,GridView1.HeaderRow.Cells[1].Text="中文注释
1"好象没起作用
3、后来我又改为下面的方法:
数据编辑(RowEditing事件中),数据绑定变为这样:
SqlDataSource1.ConnectionString = s2;
SqlDataSource1.SelectCommand = "select YTMC, BDND as 中文注释1, DZCL as 中文注释2 from
table1 where YTMC='YC1'"; //这里省略了N个字段
SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataSet;
SqlDataSource1.DataBind();
下面这两句不要了:GridView1.HeaderRow.Cells[1].Text="中文注释1";
GridView1.HeaderRow.Cells[2].Text="中文注释2";
这样数据编辑时表头显示的是中文注释
但是数据更新时出错:
s3 = "UPDATE table1 SET BDND=:BDND, DZCL=:DZCL where YTMC=:YTMC";
SqlDataSource1.UpdateCommand = s3;
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataBind(); 到这里就出错了,错误是:
执行当前 Web 请求期间生成了未处理的异常。堆栈跟踪:[OracleException (0x80131938): ORA-01036: 非法的变量名/编号
但如果我把数据编辑里的语句
qlDataSource1.SelectCommand = "select YTMC, BDND as 中文注释1, DZCL as 中文注释2";
改为: qlDataSource1.SelectCommand = "select * from table1 where YTMC='YC1'";
则不会出错,但是没有达到我的目的
请各位大虾不吝赐教!小妹这里先行谢过了!
解决方案 »
- 这样的图片路径请问如何正常显示图片?
- AspNetPager怎么用?
- 关于ASP.NET下的刷新后保持页面位置的问题------急啊求求高手们了100分我只有这么多了
- 高分求助:aspx页面的“显示”“编辑”“下载”问题
- vs.net 2005的msde在哪下载,谁可以给正确的下载地址我
- 关于ie webcontrol的问题,谢谢各位高手
- 跪求组网问题!
- 有个和奇怪的问题 VS2003的
- 在已有项目的基础上如何配置运行环境(高分请教)
- 为什么网页上显示的.txt文件中的英文可以正确显示,中文却显示为乱码?
- 新手问几个有关定时器的初级问题!!!
- <head>这里的内容能一句一句解释下吗?</head>
GridView1.Columns[1].HeaderText="中文注释1";
GridView1.Columns[2].HeaderText="中文注释2";
....
GridView1.DataBind();
=========
还有要注意界面中不要用双向绑定,比如 <%# Bind("BDND")%> 都用单向绑定<%# Eval("BDND")%>,
参数的顺序要与语句中顺序一致
谢谢!
但这样还是不行,执行到这里:GridView1.Columns[1].HeaderText="中文注释1"; 就报如下错误:索引超出范围。必须为非负值并小于集合大小。要注意界面中不要用双向绑定,比如 <%# Bind("BDND")%> 都用单向绑定 <%# Eval("BDND")%>,这是什么意思?
参数的顺序肯定与语句中的一致
=====
你的页面代码中(aspx)中最好不要用双向绑定
页面代码中没有绑,只绑了个关键字段,GridView中还有一句:DataSourceID="SqlDataSource1"
<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="True" BackColor="#C0C0FF"
DataKeyNames="YTMC"
Height="249px" OnRowEditing="GridView1_RowEditing"
OnRowUpdating="GridView1_RowUpdating"
Width="945px"
DataSourceID="SqlDataSource1"
OnRowCancelingEdit="GridView1_RowCancelingEdit" ShowFooter="True">
<FooterStyle BackColor="#FF80FF" />
</asp:GridView>在GridView1.DataBind();后修改GridView1.Columns[0].HeaderText="中文注释1"; 也是同样的问题
然后在页面使用模版列绑定数据;而且我现在这里也没有Oracle进行测试,只能say sorry了
SqlDataSource1.UpdateCommand = s3;
SqlDataSource1.UpdateCommandType = SqlDataSourceCommandType.Text;
SqlDataSource1.DataBind(); 到这里就出错了,错误是:
执行当前 Web 请求期间生成了未处理的异常。堆栈跟踪:[OracleException (0x80131938): ORA-01036: 非法的变量名/编号
==========================================
前一段时间我做了一个项目也用到了oracle数据库,你确定的s3 = "UPDATE table1 SET BDND=:BDND, DZCL=:DZCL where YTMC=:YTMC";这句代码正确吗?
哎,其实我不太清楚如何用模版列绑定数据,是这样吗?
<Columns>
<asp:BoundField DataField="YTMC" HeaderText="中文注释1" ReadOnly="True" />
<asp:BoundField DataField="BDND" HeaderText="中文注释2" />
<asp:BoundField DataField="DZCL" HeaderText="中文注释3" />
</Columns>因为我在GridView里显示查询结果时,我是用下面的语句来做:
GridView1.DataSource = DataTable.DefaultView;
GridView1.DataBind();
GridView1.HeaderRow.Cells[1].Text="中文注释1";
这样没什么问题,表头会显示中文注释,因为多个表的字段都是超过90个以上,这样做还比较简单我都没在页面里绑过,你能给我说说你“在页面使用模版列绑定数据POST http://forum.csdn.net/PointForum/Forum/Reply9A�思路吗?你不能测试没关系,我来测试
s3 = "UPDATE table1 SET BDND=:BDND, DZCL=:DZCL where YTMC=:YTMC";这句代码完全正确,确定一定以及肯定
因为:我把数据编辑里的语句
qlDataSource1.SelectCommand = "select YTMC, BDND as 中文注释1, DZCL as 中文注释2";
改为: qlDataSource1.SelectCommand = "select * from table1 where YTMC='YC1'";
则不会出错
同时,数据库里的数据已经更新了,而且就算是程序发出这个出错信息:
执行当前 Web 请求期间生成了未处理的异常。堆栈跟踪:[OracleException (0x80131938): ORA-01036: 非法的变量名/编号
数据库里的数据也更新了,好象就是那个表头出了问题
<asp:BoundField DataField="YTMC" HeaderText="中文注释1" ReadOnly="True" />
<asp:BoundField DataField="BDND" HeaderText="中文注释2" />
<asp:BoundField DataField="DZCL" HeaderText="中文注释3" />
</Columns>
========
这样是绑定列,不过也能满足要求了,再把命令按钮加进去
那么如何用模版列绑定数据?
下面这样绑定列的话:
<Columns>
<asp:BoundField DataField="YTMC" HeaderText="中文注释1" >
<Columns>
好象全都绑死了,一个表有90多上百个字段,而且还有N个这样的表要做数据修改,这样做也太恐怖了
还是告诉我你说的用模版列绑定数据吧
GridView1.Columns[2].HeaderText="中文注释2";
....
GridView1.DataBind();
你是根据数据源自动生成列的吧?
GridView的AutoGenerateColumns=false 添加绑定列.
我就是根据数据源自动生成列的
用GridView的AutoGenerateColumns=false 添加绑定列,要一列列加吗?我要做的是多个表的数据编辑与更新,我希望编辑时GridView呈现给用户的是中文表头这样方便用户编辑(表的字段都有90多上百个),编辑完后更新不出错我在GridView里显示查询结果时,我是用下面的语句来做:
GridView1.DataSource = DataTable.DefaultView;
GridView1.DataBind();
GridView1.HeaderRow.Cells[1].Text="中文注释1";
这样没什么问题,表头会显示中文注释
为什么编辑更新时就出现问题呢, 是因为GridView 的数据源是SqlDataSource吗?
是呀,只好再想办法。为了这个问题折腾了好几天了,头都大了!
还是用模版比较好一点,在模版的编辑模版中定义HeaderText是不是会好一点
你也做数据更新吗?你是如何让Gridview显示中文表头的?TO eping 2002:
模板列如何用?动态生成吗?