日期:2014-05-18  浏览次数:20459 次

请教一种方法或思路
要实现如下功能:
通过执行SqlCommand(如带比较复杂参数的select命令),将结果以表格的形式输出,输出后能对表格的内容进行编辑更新。

现在的问题是:
如何对输出后的表格内容进行编辑?

具体点就是由于select命令相对复杂,比如在有20列的表中,有选择地查询1列到20列,这1-20列又带有不同的条件,这样我就只能将查询的结果以SqlDataReader填充到gridview的形式输出,而不能用配置数据源的方式实现了。
查看了msdn,关于DataReader上面说“当   DataSourceMode   属性设置为   DataReader   时,将由   IDataReader   对象检索数据,该对象是一个只读的只进游标。”意思就是只能读?

请教能否以这种形式对输出数据进行编辑?请尽量给一些代码。
如果不能,以哪种方法比较简便?
分不多了,只能献上10分。感谢!
下面是一些主要的查询输出代码,请参考(VS2005):
                oCmd   =   New   Data.SqlClient.SqlCommand
                oCmd.Connection   =   New   Data.SqlClient.SqlConnection(strConn)
                oCmd.CommandText   =   "select   "   &   CmdStr   &   "   from   jichu   where   (基站名   like   ' "   &   name1   &   " ')and(基站号   like   ' "   &   jzid1   &   " ')and   (地区   like   ' "   &   diqu1   &   " ')   and(基站类型   like   ' "   &   type1   &   " ')   "
                oCmd.Connection.Open()

                Dim   myreader   As   Data.SqlClient.SqlDataReader   =   Nothing
                myreader   =   oCmd.ExecuteReader()
                GridView1.DataSource   =   myreader
                GridView1.DataBind()


------解决方案--------------------
对于asp.net2.0编程,使用sqlDataSource当然是正选。更新记录跟select时有没有复杂的查询条件、有没有改变select关键字后边的字段列表根本没有关系。既然你能动态形成oCmd.CommandText(然后绑定),就能动态设置sqlDataSource查询表达式(然后绑定)。

退一步说,就算按照你的写法,使用GridView1.DataSource 而不是 GridView1.DataSourceID 关联数据源,那么更新就应该按照 ADO.NET的 DbDataCommand.ExecuteNoneExecute() 方法将查询提交数据库,然后再重新绑定数据。总之需要自己写很多很多代码,而且你肯定并不比asp.net2.0已经写好的数据源控件干的更漂亮。