问几个winform的问题

vfan2010 2007-12-19 10:18:27
从来没做过winform程序。
1.我有一个DataGridview控件来显示数据,有一列是DataGridViewComboBoxColumn,绑定之后有一个字段叫Status,我希望从数据库中取出来的数据来让它对应的项被选中。
例如Status=1,则DataGridViewComboBoxColumn第一项被选中,具体如何实现?
2. 如何让winform实现windows身份验证来登录程序,就是不用连接数据库去验证用户名和密码。直接用windows身份验证。
...全文
314 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
GhostAdai 2007-12-24
  • 打赏
  • 举报
回复
作个标记慢慢看。
fckadxz 2007-12-20
  • 打赏
  • 举报
回复
请参考:
"Data Source= [server's name or ip] ;Initial Catalog=[database's name];Integrated Security=SSPI"
把[]内的文字写成你自己的字串.比如你要连接本机(服务器名称为"server1",ip为127.0.0.1)的 "test" 数据库 可以这样写

"Data Source= (local) ;Initial Catalog=test;Integrated Security=SSPI"

或下面2种写法更详细的指定:

第1种是指定服务器机器ip "127.0.0.1",sqlserver实例端口号1433(这个tcp端口号可以在sqlserver里设定)和sqlserver实例名"(local)".
"Data Source= 127.0.0.1\(local),1433;Initial Catalog=test;Integrated Security=SSPI"

第2种是指定服务器机器名称 "server1",sqlserver实例端口号1433 ,和sqlserver实例名"(local)".
"Data Source= server1\(local),1433;Initial Catalog=test;Integrated Security=SSPI"

指定sqlserver实例主要用在一台机器安装有多个sqlserver实例的情况.

非集成验证一般采用 "sa" 用户和sa的密码,这个微软不推荐,但是我更多遇到人使用这种方法,也许是方便编程人员,也许是方便客户(不需要登录服务器).



vfan2010 2007-12-20
  • 打赏
  • 举报
回复
主管决定不用winform来做了,汗。改为web的,呵呵。白白损失了250分。
lovehongyun 2007-12-19
  • 打赏
  • 举报
回复
string login;
login = WindowsIdentity.GetCurrent().Name.ToString();
soaringbird 2007-12-19
  • 打赏
  • 举报
回复
集成用户验证,就是用登录系统的用户去验证,这个跟用不用连接数据库去验证用户名和密码没关系,只要你用数据库存储权限设置,你就要连接数据库。
想做到集成用户验证,首先设置权限的地方得将权限跟系统用户或组关联,验证时取得当前系统用户,检查该用户是否在已设定的用户或组中。
vfan2010 2007-12-19
  • 打赏
  • 举报
回复
噢,不好意思,我后面加了一个测试代码,所以出现了这样的问题。
第一个问题解决了。谢谢各位,请大家关注第二个问题,谢谢。
vfan2010 2007-12-19
  • 打赏
  • 举报
回复
第一个问题差不多了,但是为什么第一行没有默认选中?它在数据库中是1,应该第一项要被选中,但是没有。

zhmvb 2007-12-19
  • 打赏
  • 举报
回复
mark
lovehongyun 2007-12-19
  • 打赏
  • 举报
回复
直接绑上.设置一下就可以.

还可以这样: DataGridTableStyle ts = new DataGridTableStyle();

你可以查下DataGridTableStyle 用法
  • 打赏
  • 举报
回复
那你可以用System.Management里的类,取得系统中的用户,看看登录的是不是有权限的用户,或者着用户是不是属于特定的组,这样就是你要的功能了吧?
lsj_zrp 2007-12-19
  • 打赏
  • 举报
回复
第2个如果是想通过Windows集成安全验证的话,数据库连接字符串加上Intergrated Security=true就OK了
wzhnet 2007-12-19
  • 打赏
  • 举报
回复
1 可以在Datagridview中的EditingControlShowing事件里边做手脚。

类似

ComboBox cmb = e.Control as ComboBox;
cmb.SelectedItem = ×××;
lyg1166 2007-12-19
  • 打赏
  • 举报
回复
绑定DataGridview后 设定 DataPropertyName为数据库内的字段【Status】, ValueMember=Status就可以了。
lsj_zrp 2007-12-19
  • 打赏
  • 举报
回复
第2个:
用这个可以获得当前登陆的用户名:Environment.UserName.ToString()
第1个:
帮定DataGridViewComboBoxColumn时,指定Value值为Status就OK了
这个是显示性别的:
DataGridViewComboBoxColumn co_sex = new DataGridViewComboBoxColumn();
co_sex.DataPropertyName = "sSex";//sSex为数据库字段
co_sex.HeaderText = "性别・;
DataTable dt = new DataTable();
dt.Columns.Add("sexname");
dt.Columns.Add("sexvalue");
DataRow dr = dt.NewRow();
dr[0] = "男";
dr[1] = "0";
dt.Rows.Add(dr);
DataRow dr1 = dt.NewRow();
dr1[0] = "女";
dr1[1] = "2";
dt.Rows.Add(dr1);

co_sex.DataSource = dt;
co_sex.ValueMember = "sexvalue";
co_sex.DisplayMember = "sexname";

this.dgUser.Columns.Add(co_sex);
如果数据库sSex=0,则显示男;sSex=1则显示女
ToooooddZhao 2007-12-19
  • 打赏
  • 举报
回复
选择项不多的话,可以创建一个Datatable,然后指定到DataGridViewComboBoxColumn的datasource,

datatable key value 分别是你从数据库中读取出来的数据 ,和显示的数据。

不知道lz是不是这个意思
naturalth 2007-12-19
  • 打赏
  • 举报
回复
1.可以直接绑定的啊。
DataGridViewComboBoxColumn
有个DataPropertyName属性,绑定为选择项的filed
2.不太明白你的意思。不知道你说的是不是windows的数据库的集成认证。
如果是的话直接把连接字符串改为集成认证的写法了。
smaworm 2007-12-19
  • 打赏
  • 举报
回复
涉及到DataGridview的时候还要注意几行几列的设置就好了。
smaworm 2007-12-19
  • 打赏
  • 举报
回复
switch(Status)
{ case 1 :
ComboBox.SelectedIndex = 1;
case 2 :
ComboBox.SelectedIndex = 2;
}
vfan2010 2007-12-19
  • 打赏
  • 举报
回复
Status有三个。
  • 打赏
  • 举报
回复
第一个问题你可以在sql语句里转成True,False.这样帮顶上去就可以知道是不是选中了。
加载更多回复(7)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧