在C#里 使用datageiview显示数据库的数据怎么显示

在C#里 使用datageiview显示数据库的数据怎么显示,第1张

public class publicconfig
{
private string constr = "Provider=MicrosoftJetOLEDB40;Data Source=" + DirectoryGetCurrentDirectory() + "\\data\\wldatamdb;Jet OLEDB:Database Password=;"; //数据库连接字符串
public int AddFunction(string sqlstr)//增加数据函数
{
OleDbConnection mycon = new OleDbConnection();
myconConnectionString = constr;
myconOpen();
OleDbCommand mycmd = new OleDbCommand(sqlstr, mycon);
int tmpresult= mycmdExecuteNonQuery();
myconClose();
return tmpresult;
}
public int UpdateFunction(string sqlstr)//更新数据函数
{
OleDbConnection mycon = new OleDbConnection();
myconConnectionString = constr;
myconOpen();
OleDbCommand mycmd = new OleDbCommand(sqlstr, mycon);
int tmpresult = mycmdExecuteNonQuery();
myconClose();
return tmpresult;
}
public int DeleteFunction(string sqlstr)//删除数据函数
{
OleDbConnection mycon = new OleDbConnection();
myconConnectionString = constr;
myconOpen();
OleDbCommand mycmd = new OleDbCommand(sqlstr, mycon);
int tmpresult = mycmdExecuteNonQuery();
myconClose();
return tmpresult;
}
public DataSet SelectFunction(string sqlstr) //查询数据函数
{
OleDbConnection mycon = new OleDbConnection();
myconConnectionString = constr;
myconOpen();
OleDbDataAdapter myda = new OleDbDataAdapter(sqlstr,mycon);
DataSet myds = new DataSet();
mydaFill(myds);
myconClose();
return myds;
}
}
string sqlstr="select from datatable";
publicconfig myclass=new publicconfig();
dataset ds=new dataset();
ds=myclassSelectFunction(sqlstr);
if(dstable[0]rowscount>0)
{
dataGridView1DataSource = dsTables[0];
}

产品最近提了一个 需要三级选择器 才能实现的需求,看了iView和Element-UI,没有找到合适的组件,然后做了一个基于iView的TreeSelect 组件。

github地址: >

最近的一个项目里面有一个需求是这样的,要实现表格第一列和最后一列相同的内容合并成一格,形成的结果就是多条有相同字段的数据放在表格里面看起来就是一条数据,但是中间的列还是显示每条数据不同的部分。实现的结果如下图

而项目用的UI库iview虽然官网上有介绍 表格行列合并 ,但是看完示例之后我是一脸懵逼的,完全就没有说清楚好不好,也有可能是我理解有问题吧。参考了网上的一些文章才最后弄懂这个东西怎么用,这篇文章就把这个记录下来以备以后忘了可以查看。

先按照官网上的写法来理解一遍

column配置照着官网文档写就行,而数据其实还是四条

最重要的是span-method

第一处if-else判断:
rowIndex === 0代表第一行,columnIndex === 0代表第一列
return [2, 1] 代表需要合并2行1列
同理 rowIndex === 1 && columnIndex === 0代表第二行第一列
return [0, 0]代表合并0行0列,即它是被合并的单元格
同理可得第二个if-else判断就是把第三行第一列和第四行第一列合并在了一起,而最后一列的合并和第一列的合并基本相同,至此这个表格就算完成了。
注意: rowIndex和columnIndex都是从0开始的, return[0, 0] 都是代表的被合并的单元格。

项目中的数据肯定不会这样写了,从上面的 span-method 方法可以看出这个里面实际上进行了数据的遍历,所以我们可以先把接口拿到的数据处理好,然后在 span-method 中直接返回设置好的值就行了。写到这里我发现直接写下去有点难,我在项目里面后台返回的是一个分组之后的数据,所以很直观的就做出来了,如果取到的数据是一个散乱的一维数组,假设后台也懒得给你分组,那么整套流程就需要前端自己完成了。

为了使思路清晰一点,我们从结果反向推导:

这里用到了一些 *** 作数组的方法,以下划线开头的,来自 lodash ,最后得到的一维数组就是table组件要用的data。

最后将上面几步合起来,我们就能从原始的数据得到table组件需要的数据了。table组件在合并单元格之后最好使用 disabled-hover 将hover样式去掉。

----------- 2021/10/18更新 -----------
最近做element的项目发现element官网上的判断方法挺好的,可以参考一下
>

在一些按钮的点击 *** 作中,假如没有限制,用户多次点击,会向后台发送多次请求。

还有一种情况是:当页面加载时,假如数据没有加载完成,此时为了防止用户进行 *** 作,会显示一个遮罩:加载中。这个 *** 作和上面差不多,只是触发方式不同,一个是在生命周期中触发,一个是通过用户点击触发

html:

css:

js:

html:

js:

当你使用了遮罩的方式,并且在向后台发送请求之前进行了验证,验证提示是以Messaged窗显示的,当用户多次点击时,会重复出现多次提示信息。

html:

js:

css样式:d窗遮罩层在拉滚动条发现遮罩层没铺满屏幕
解决方式:把 absolute 换成 fixed
iview样式源码:

更改为 position: fixed;
自己写遮罩的话,原理也是相同。

网站导航

参考资料:


1 >场景:使用iview-ui,form表单内嵌table支持编辑,对某个字段进行单独效验

页面中form表单中包含的table,table的columns使用render函数进行渲染,本身form表单有多条数据进行效验,编辑表格内容时单独对某个input框进行效验。
将表格内效验的条件也写在form的rules 内,表格render函数渲染input时,使用form-item包裹,并填写prop,作为表单中的一项可调用效验,需在data中提前声明。(注意:同时效验多行同一个字段可能会出错)

在table新增时先对form 内容进行部分效验
this$refs['formValidate']validate((valid) => {})
table 编辑 input 失去焦点时再次触发form表单效验

日常记录,有错误or优化,请指出不胜感谢!


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

原文地址: https://outofmemory.cn/yw/13412550.html

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

发表评论

登录后才能评论

评论列表(0条)

保存