wpf中datagrid使用linq链接数据库后.如何从datagrid表中取出选中列的值

wpf中datagrid使用linq链接数据库后.如何从datagrid表中取出选中列的值,第1张

datagrid默认是不能选中列的。到底是选中行还是选中列!

data.SelectedItems这是得到选中的项,用foreach循环能得到DataRowView

foreach (var item in data.SelectedItems)

{

DataRowView dr = item as DataRowView

object[] obj = dr.Row.ItemArray

}

直接用sql处理就行了

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_exporttb]

GO

create proc p_exporttb

@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent

@path nvarchar(1000), --文件存放目录

@fname nvarchar(250), --文件名

@sheetname varchar(250)='' --要创建的工作表名,默认为文件名

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--参数检测

if isnull(@fname,'')='' set @fname='temp.xls'

if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'.','#')

--检查文件是否已经存在

if right(@path,1)<>'\' set @path=@path+'\'

create table #tb(a bit,b bit,c bit)

set @sql=@path+@fname

insert into #tb exec master..xp_fileexist @sql

--数据库创建语句

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (*.xls)}DSN=''''READONLY=FALSE'

+'CREATE_DB="'+@sql+'"DBQ='+@sql

else

set @constr='Provider=Microsoft.Jet.OLEDB.4.0Extended Properties="Excel 8.0HDR=YES'

+'DATABASE='+@sql+'"'

--连接数据库

exec @err=sp_oacreate 'adodb.connection',@obj out

if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr

if @err<>0 goto lberr

--创建表的SQL

declare @tbname sysname

set @tbname='##tmp_'+convert(varchar(38),newid())

set @sql='select * into ['+@tbname+'] from('+@sqlstr+') a'

exec(@sql)

改变前的值一般在

dataGridView

绑定时候用一个隐藏域或其他控件绑定并不显示,然后取的时候直接去

取隐藏域的值。(注意隐藏域是放在dataGridView

模板列中)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9961767.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存