请教一种方法或思路
要实现如下功能:
通过执行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已经写好的数据源控件干的更漂亮。