当前位置:编程学习 > C#/ASP.NET >>

[WinForm]控件问题。。

问题描述:
初始界面如下:
M001是被勾上的。。。

当我选择ComboBox里面的SysAdmin值时,并把A001和A002勾上并点保存按钮..界面如下:

我再次点ComboBox里面的Master值时,M001被勾被去掉了。。



这是保存按钮的代码:

private void btnSave_Click(object sender, EventArgs e)
        {
            userRule = new UserRule();
            userRule.DeleteARoleFunction(code);
            foreach (DataGridViewRow row in dgvwRole.Rows)
            {
                if (row.Cells["选择"].Value != null && row.Cells["选择"].Value.ToString() == "True")
                {
                    try
                    {
                        string functionCode = row.Cells[1].Value.ToString();
                        userRule.AddRoleFunction(functionCode, code);
                       
                    }
                    catch (Exception)
                    {

                    }
                }
               
             }
            MessageBox.Show("设置成功", "提示");
        }
--------------------编程问答-------------------- M001被勾被去掉了。。不知道要怎么改,M001才不被钩掉?  --------------------编程问答--------------------
我看你选择不同GridView的数据源也变了?
那得看你ComboBox的SelectIndexChange的代码是怎么写的 --------------------编程问答-------------------- ComboBox改变时,数据库从新绑定!!! --------------------编程问答-------------------- 这个ComboBox的代码:

private void cboRole_SelectedIndexChanged(object sender, EventArgs e)
        {
            //自动调整列的宽度
            dgvwRole.Columns[0].AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.DisplayedCells;
            
            userRule = new UserRule();

            userRule.GetFunction(this.dgvwRole, this.cboRole, code);
            for (int i = 0; i < this.dgvwRole.Rows.Count; i++)
            {
                if (this.dgvwRole["Flag", i].Value.ToString() == "1")
                {

                    this.dgvwRole["选择", i].Value = true;
                }
            }

            
        }
--------------------编程问答-------------------- 这个应该在
ComboBoxchanged事件里来做吧
判断是哪个就把那个的选择框选中.
比如时system
的话就设置m001 and m002
不知道你的选择是什么依据来的
是客户手动的呢,还是从数据库里来的
如果是手动的就座变量记录
要是从数据库来就简单多了 --------------------编程问答-------------------- 从数据库里来的 --------------------编程问答-------------------- ComboBox改变时,数据库从新绑定!!!?

绑定没有用啊,因为M001已经从数据库里删除了 --------------------编程问答--------------------

private void btnSave_Click(object sender, EventArgs e)
        {
            userRule = new UserRule();
            userRule.DeleteARoleFunction(code);//点击保存的时候,根据用户名吧数据全部删除
            foreach (DataGridViewRow row in dgvwRole.Rows)
            {
                if (row.Cells["选择"].Value != null && row.Cells["选择"].Value.ToString() == "True")
                {
                    try
                    {
                        string functionCode = row.Cells[1].Value.ToString();
                        userRule.AddRoleFunction(functionCode, code);//然后再重新添加
                       
                    }
                    catch (Exception)
                    {

                    }
                }
               
             }
            MessageBox.Show("设置成功", "提示");
        }

--------------------编程问答-------------------- 你跟踪调试下吧

看看保存的时候有问题
还是绑定数据源的时候有问题

保存的时候看看你勾上的Row是否保存到数据库中,你的Flag是否正确

绑定的时候看看
if (this.dgvwRole["Flag", i].Value.ToString() == "1")
这句是否符合条件 --------------------编程问答-------------------- 符合条件啊,应该是保存的时候出的问题吧 --------------------编程问答-------------------- 唉,搞了一天了,就剩下这个BUG搞不定。。不知道什么问题 --------------------编程问答-------------------- 数据重新绑定的时候CheckBox肯定重置。你在数据库里写一个字段记录下CheckBox的属性,这样做会好点。要不的话你每次更改ComboBox时都会重新绑定数据。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,