在gridview中改变条件的单元格值 - c#

时间:2017-10-23 10:13:02

标签: c# gridview datagridview

我已经从SQL服务器获取数据到datagridview但我不知道如何更改单元格值。我必须将获取的值1和0更改为可用且不可用。这是我获取数据的代码...请帮忙。

private void btnsearch_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("server = 192.168.100.6;Database=sms;UID=sa;Password=1234;");
        SqlCommand cmd = new SqlCommand("Select id as 'Book ID',name as 'Name' , status as 'Status' from book where Name = @name", con);
        cmd.Parameters.AddWithValue("@name", txtFirstName.Text);
        try
        {

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            DataTable dt = new DataTable();
            da.Fill(dt);
            BindingSource bsource = new BindingSource();
            bsource.DataSource = dt;
            dataGridView1.DataSource = bsource;
        }
        catch (Exception ec)
        {
            MessageBox.Show(ec.Message);
        }

    //    chage_value();
        dataGridView1.Show();

    }

}

2 个答案:

答案 0 :(得分:0)

请在下面找到答案

  private void btnsearch_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("server = 192.168.100.6;Database=sms;UID=sa;Password=1234;");
string sSql=@"Select id as 'Book ID',name as 'Name' , 
           Case when status=0 then 'unavailable' else 'available '
           End as 'Status' from 
           book where Name ='"+txtFirstName.Text +"'" 
            SqlCommand cmd = new SqlCommand(sSql, con); 
            try
            {

                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;

                DataTable dt = new DataTable();
                da.Fill(dt);

                dataGridView1.DataSource = dt;
            }
            catch (Exception ec)
            {
                MessageBox.Show(ec.Message);
            }

        //    chage_value();
            dataGridView1.Show();

        }

    }

答案 1 :(得分:0)

首先,尝试将查询存储在变量中。从长远来看,这将对您有所帮助。此外,在尝试将查询发送到服务器之前,最好先检查是否已连接。重要的是要记住,当您从服务器获取数据时,它很可能被视为一个字符串,因此如果您想将其作为数字进行比较,则需要先将其转换。

你能做的是类似于我在下面写的东西。您计算查询返回的答案数量,然后遍历它们并检查它们是0还是1.然后只需将值替换为AvaliableUnavaliable

if (dbCon.IsConnect()){
            MySqlCommand idCmd = new MySqlCommand("Select * from " + da.DataGridView1.Text, dbCon.Connection);
            using (MySqlDataReader reader = idCmd.ExecuteReader()){
              //  List<string> stringArray = new List<string>(); // you could use this string array to compare them, if you like this approach more.
                while (reader.Read()){
                    var checkStatus= reader["Status"].ToString();
                    Console.WriteLine("Status: " + checkStatus.Split(' ').Count()); //checks how many items you've got.
                    foreach (var item in checkStatus.Split(' ').Select(x => x.Trim()).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray()){
                        var item2 = 0.0; // your 0 or 1 for avaliable or unavaliable..
                        try{
                            item2 = double.Parse(item.ToString());
                            if(strcmp(item2,'0') == 1){ //assuming you only have 0's and 1's.
                              item2 = "unavaliable";
                            }else{
                              item2 = "avaliable";
                            }
                        }
                        catch (Exception){
                            //do what you want
                        }
                        Console.WriteLine("item: " + item2);
                    }
                }
                dbCon.Close();
            }
        }
        return //what you want;
}