【发布时间】:2015-12-21 07:59:06
【问题描述】:
当在 PID(文本框)中输入 id(在数据库中)时,我希望 sql 数据显示在数据网格预定义列中。例如:如果我在文本框中输入 1,product_Name(wai wai chicken) 应该显示在 Particulars 列中,product_Id(1) 本身应该显示在 PID 列中,actual_Sp(15) 应该显示在 Amount 列中,并且当在数量文本框中输入数字,它应该显示在单位数量列中,并且应该乘以金额(例如,当输入 1 时,显示 wai wai 以及当在数量文本框中输入 2 时,金额显示为 15(actual_sp),金额应该显示 30(as 15*2=30))。
我尝试了以下代码,但它在我的 DGV 中添加了新列,而不是在我的预定义列中显示:
string cc = "";
int n;
if (int.TryParse(textBox1.Text, out n))
{
cc = "product_Id = " + textBox1.Text.Trim();
}
else
{
cc = "product_Name LIKE '%" + textBox1.Text.Trim() + "%'";
}
if (string.IsNullOrEmpty(textBox1.Text))
{
cc = "1 = 1";
}
SqlConnection con = new SqlConnection("Data Source=SUMIT;Initial Catalog=Project;Integrated Security=True");
SqlCommand cmd = new SqlCommand("Select product_Name as [Product Name],cast(actual_Sp as INT) * '" + textBox2.Text + " 'as [Actual SP] from Product WHERE " + cc, con); ;
cmd.CommandType = CommandType.Text;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
dataGridView1.AutoGenerateColumns = false;
dataGridView1.ColumnCount = 7;
dataGridView1.Columns[0].Name = "ProductId";
dataGridView1.Columns[0].HeaderText = "PID";
dataGridView1.Columns[0].DataPropertyName = "product_Id";
dataGridView1.Columns[1].HeaderText = "S.N.";
dataGridView1.Columns[1].Name = "Serial Number";
dataGridView1.Columns[2].Name = "Particulars";
dataGridView1.Columns[2].HeaderText = "Particulars";
dataGridView1.Columns[2].DataPropertyName = "product_Name";
dataGridView1.Columns[3].Name = "Unit Quantity";
dataGridView1.Columns[3].HeaderText = "Unit Quantity";
dataGridView1.Columns[4].Name = "Amount";
dataGridView1.Columns[4].HeaderText = "Amount";
dataGridView1.Columns[5].Name = "Discount";
dataGridView1.Columns[5].HeaderText = "Discount";
dataGridView1.Columns[6].Name = "Sub-Total";
dataGridView1.Columns[6].HeaderText = "Sub-Total";
dataGridView1.DataSource = dt;
}
【问题讨论】:
-
SQL Injection alert - 你应该不将你的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
你能展示你的前端代码吗(asp.net webforms?)。
-
@sr28 m 不使用(asp.net web),它的c#(win form)
-
您可以改为创建列表视图。使用列表视图,您可以比使用网格视图更好地自定义网格。
-
看起来您需要将 DGV 中的列数据绑定到您希望它们包含的 SQL 列。
标签: c# sql-server datagrid