繁体   English   中英

如何检索listbox.valuemember属性的值

[英]How to retrive value of listbox.valuemember property

我是C#编程的初学者。 我已经在这种模式下过滤了结果:

listamicizie1.DisplayMember = "viewname"; // it's a alias
listamicizie1.ValueMember = "IdUtente"; //it's a primary key in my db table
listamicizie1.DataSource = ds.Tables["UTENTI"]; //db table

现在我必须在另一个数据库表中注册列表框结果的值,然后使用该代码

    string idu = string.Empty;
    string value = string.Empty;
    foreach (var item in listamicizie1.ValueMember)
    {        
       for (int j = 0; j < listamicizie1.Items.Count; j++)
       {
           idu = listamicizie1.SelectedValue;
           value += idu + ",";
       }
    }
    value = value.TrimEnd(',');
    value = value.TrimEnd(',');
    idutente = user.Text;
    string CnnStr = System.Configuration.ConfigurationSettings.AppSettings["CnnStr"].ToString();
    string querysql2 = " INSERT INTO AMICIZIA (IdUtente1, [idamici]) VALUES ('" + idutente + "', '" + value + "')";
    SqlConnection myconn = new SqlConnection(CnnStr);
    SqlCommand mycmd = new SqlCommand(querysql2, myconn);
    try
    {
       myconn.Open();
       mycmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
       MessageBox.Show(ex.ToString());
    }
    finally
    {
       myconn.Close();
    }    

  }
  this.Close();

}

该程序正在运行,但是当我打开第二个数据库表(AMICIZIA)时,idamici中的值不是主键(第一个表中的idutente),而是i,d,u,t,e,n,t, e ,。

如何获取idutente的原始价值? 谢谢

(很抱歉,如果我写了一些错误,但我不是英语的人:)

不要使用value.TrimEnd(','); 使用value.Replace(',', '');

同样好的做法是使用Parameters而不是串联字符串。

        string idu = string.Empty;
        string value = string.Empty;
        foreach (var item in listamicizie1.ValueMember)
        {


            for (int j = 0; j < listamicizie1.Items.Count; j++)
            {
                idu = listamicizie1.SelectedValue;
                value += idu + ",";
            }
        }
        //value = value.TrimEnd(',');
        //value = value.TrimEnd(',');
        value = value.Replace(',', '');
        value = value.Replace(' ', ''); //Add this line if you do not want space. 
        idutente = user.Text;
        string CnnStr = System.Configuration.ConfigurationSettings.AppSettings["CnnStr"].ToString();
        string querysql2 = " INSERT INTO AMICIZIA (IdUtente1, idamici) VALUES ('" + @idutente,  @value)";
        SqlConnection myconn = new SqlConnection(CnnStr);
        SqlCommand mycmd = new SqlCommand(querysql2, myconn);
        try
        {
            myconn.Open();
            mycmd.Parameters.AddWithValue("@idutente", idutente);
            mycmd.Parameters.AddWithValue("@value", value);
            mycmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
        finally
        {
            myconn.Close();
        }


    }
    this.Close();
}

添加:

您还可以更改代码value += idu + ","; 在生成value ,请参见代码

foreach (var item in listamicizie1.ValueMember)
{        
   for (int j = 0; j < listamicizie1.Items.Count; j++)
   {
       idu = listamicizie1.SelectedValue;
       value += idu.Trim(idu);
   }
}
//value = value.TrimEnd(',');
//value = value.TrimEnd(',');

现在无需致电Replace

从列表框中添加所有项目**

试试这个代码。

        string CnnStr = System.Configuration.ConfigurationSettings.AppSettings["CnnStr"].ToString();
        string querysql2 = " INSERT INTO AMICIZIA (IdUtente1, idamici) VALUES ('" + @idutente,  @value)";
        SqlConnection myconn = new SqlConnection(CnnStr);
        SqlCommand mycmd = new SqlCommand(querysql2, myconn);
        myconn.Open();

        for (int i=0; i < listamicizie1.Items.Count; i++)
        {
            var myitem = listamicizie1.Items[i];
            var dataArray = ( myitem as DataRowView).Row.ItemArray;
            //MessageBox.Show(dataArray[0].ToString());
            idutente = user.Text; //I don't know what are you storing here.
            value = dataArray[0].ToString(); //dataArray[0] should have key

            try
            {
              mycmd.Parameters.AddWithValue("@idutente", idutente);
              mycmd.Parameters.AddWithValue("@value", value);
              mycmd.ExecuteNonQuery();
              mycmd.Parameters.Clear();
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.ToString());
               return;
            }
            finally
            {
              myconn.Close();
            }

        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM