ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – Combobox数据绑定显示system.data.datarowview

2019-06-13 04:05:43  阅读:136  来源: 互联网

标签:c sql-server data-binding combobox


我将combobox与datasource,displaymember,valuemember绑定.它在我的电脑上工作正常,但它不适用于客户端电脑.以下是我的源代码:

从UserControl的构造函数调用cbxAlloyBinding方法.

private void cbxAlloyBinding()
    {
        DataTable dt = new DataTable();
        SqlDataAdapter adp = new SqlDataAdapter("SELECT alloyName,alloyId FROM alloy", con);
        adp.Fill(dt);

        if (dt.Rows.Count > 0)
        {
            cbxMetal.DisplayMember = "alloyName";
            cbxMetal.ValueMember = "alloyId";
            cbxMetal.DataSource = dt;
        }
        else
        {
            cbxMetal.Text = "";
        }
    }

    private void cbxMetal_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cbxMetal.SelectedIndex != -1)
        {
            DataTable dt = new DataTable();
            tempcmd = new SqlCommand("SELECT specification,alloyCode FROM alloy where alloyId='" + cbxMetal.SelectedValue + "'", con);
            SqlDataAdapter adp = new SqlDataAdapter(tempcmd);
            adp.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                txtSpecification.Text = dt.Rows[0]["alloyCode"].ToString();
                txtSupplyConditions.Text = dt.Rows[0]["specification"].ToString();
                cbxheatBinding();
            }
            else
            {
                txtSpecification.Text = "";
            }

        }
    }

这让我困扰了最近两天,我几乎尝试了所有的技巧,但它仍然无法正常工作.

客户端的PC使用的是Windows 7 ultimate,sql server 2005和.net framework 3.5.

解决方法:

如果在构造函数中调用cbxAlloyBinding()之前调用了cbxMetal_SelectedIndexChanged,则肯定会发生这种情况.

例如(请参阅下面的代码),您可能在构造函数中有其他组合框绑定,这可能在构造函数中的cbxAlloyBinding()之前,并且这些绑定正在调用cbxMetal_SelectedIndexChanged.

public Constructor()
{
        InitializeComponent();

        cbxheatBinding();      //1st Three Binding Methods may be somehow related to your cbxMetal,
        dtpStartDateBinding(); //which leads them to call cbxMetal_SelectedIndexChanged method.
        dtpEndDateBinding();
        cbxAlloyBinding();
}

我怀疑你的cbxMetal.DataSource是从你的代码中的其他一点设置的,并且在分配了DisplayMember和ValueMember之前;

请记住,System.DataRow.DataRowView只会发生

ComboBox.SelectedValue is called before ValueMember assignment.

标签:c,sql-server,data-binding,combobox
来源: https://codeday.me/bug/20190613/1230304.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有