首页 > 解决方案 > 在 C# 中从组合框中选择乌尔都语文本不会更新表单中的文本框或标签,但适用于具有相同代码的英文文本

问题描述

我正在用乌尔都语文本中的数据库表在 C# 上创建一个带有 SQL 服务器管理的软件。遇到问题:我在 SQL 中创建了一个包含三列 sm_id、sm_sympton 和 sm_tehreek 的表 TblMardanax。在 C# 窗口上形成一个组合框来显示 sm_symptom 和一个带有组合的标签来显示 sm_tehreek。当我将英文数据放在表 TblMardanax 中时,它做得很好(根据从组合中选择的项目更改标签文本)但是当我将数据放在乌尔都语中时,标签保持空白(未更改)。我不明白是什么问题,代码中没有显示错误。代码在这里。

private void Symptoms_Load(object sender, EventArgs e)
        {
            MardanaCB.Items.Clear();
            con.Open();
            cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT sm_symptom FROM TblMardanax";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            foreach(DataRow dr in dt.Rows)
            {
                MardanaCB.Items.Add(dr["sm_symptom"].ToString());
            }
            con.Close();
        } 

private void MardanaCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM TblMardanax WHERE sm_symptom='" + MardanaCB.Items[MardanaCB.SelectedIndex].ToString() + "'";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            foreach(DataRow dr in dt.Rows)
            {
                SymLbl1.Text = dr["sm_tehreek"].ToString();
                SymTxt1.Text = dr["sm_tehreek"].ToString();
            }
            con.Close();
        }

标签: c#sql-server

解决方案


Al-Hamdo-Lillah,我的问题解决了:这里的代码适用于类似乌尔都语的语言,可以通过 c# 添加到 SQL 数据库中。

private void MardanaCB_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (MardanaCB.Text =="")
            {
                SymLbl1.Text = "0";
            }
            else
            {
                SymLbl1.Text = MardanaCB.SelectedValue.ToString();
                //con.Open();
                //SqlCommand cmd = con.CreateCommand();
                //cmd.CommandType = CommandType.Text;
                //cmd.CommandText = "SELECT * FROM Alamaat WHERE al_name=(N'" + MardanaCB.SelectedItem.ToString() + "')";//this is the line with N worked fine.
                //DataTable dt = new DataTable();
                //SqlDataAdapter da = new SqlDataAdapter(cmd);
                //da.Fill(dt);
                //foreach (DataRow dr in dt.Rows)
                //{
                    //SymLbl1.Text = dr["al_tehreek"].ToString();
                //}
                //con.Close();
                SymplusCB1.Enabled = true;
            }
        }

推荐阅读