【发布时间】:2013-03-27 08:59:26
【问题描述】:
我不知道如何描述我在寻找什么,但我可以用我绘制的图表来说明它。
下面的第一个是“用户输入”,它将在 gridview 中,需要用户输入详细信息。 (textbox) 是一个文本框,它旁边的细节是一个输入示例。
User Inputs:
Items Quantity Unit Price Total
(textBox)abc (textBox)2 (textBox) 100 (textBox) 200
(textBox)def (textBox)1 (textBox) 150 (textBox) 150
点击保存按钮后(我没有显示按钮,对不起),详细信息将保存在数据库中,如下图“保存在数据库中”。
Save in Database:
ID Items Quantity UnitPrice Total
10001 Abc , def 2,1 100,150 200,150
当用户想要显示详细信息时,详细信息应如下面的“显示结果”所示。
Display Results:
ID:10001
Items Quantity Unit Price Total
Abc 2 100 200
def 1 150 150
我希望这个解释是可以理解的,我在解释和 ASP 方面都很差。 请帮我用 C# 或 VB 编写代码,因为我无法选择这样做。 太感谢了。
代码示例:
string sql = "INSERT INTO Products(Name, ProductImage, OriginalPrice, DiscountPrice, Descriptions,StockQuantity, Category) VALUES (@Name, @ProdImage, @OriPrice, @DisPrice, @Descrp, @Quantity, @Category)";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter[] param = new SqlParameter[7];
param[0] = new SqlParameter("@Name", SqlDbType.VarChar,100);
param[1] = new SqlParameter("@ProdImage", SqlDbType.VarChar, 100);
param[2] = new SqlParameter("@OriPrice", SqlDbType.Float );
param[3] = new SqlParameter("@DisPrice", SqlDbType.Float );
param[4] = new SqlParameter("@Descrp", SqlDbType.VarChar,50);
param[5] = new SqlParameter("@Quantity", SqlDbType.Int);
param[6] = new SqlParameter("@Category", SqlDbType.VarChar,50);
param[0].Value = name;
param[1].Value = image;
param[2].Value = OriPrice;
param[3].Value = disPrice;
param[4].Value = description;
param[5].Value = quantity;
param[6].Value = Category;
for (int i = 0; i < param.Length; i++)
{
cmd.Parameters.Add(param[i]);
}
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
当前代码:
private string CreateRow(DataTable data, Int32 index, String ColumnName)
{
String[] quan = data.Rows[0][ColumnName].ToString().Split(',');
if (quan.Length >= index)
return quan[index].ToString();
else
return "";
}
protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("");
string sql = "SELECT * FROM SalesOrder WHERE ID = 10010";
DataSet DataFromDataBase = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter("SELECT * FROM SalesOrder WHERE ID = 10010", conn);
adp.Fill(DataFromDataBase);
DataTable TempData = new DataTable();
TempData.Columns.Add("Quantity", typeof(string));
TempData.Columns.Add("UnitPrice", typeof(string));
for (Int32 i = 0; i < 5; i++)
{
DataRow row = TempData.NewRow();
row[0] = CreateRow(DataFromDataBase, i, "Quantity");
row[1] = CreateRow(DataFromDataBase , i, "UnitPrice");
TempData.Rows.Add(row);
}
}
【问题讨论】:
-
当输入和输出都被规范化时,为什么要以这种非规范化格式存储它?
-
您使用哪个控件来显示数据?网格视图、中继器、数据列表或任何其他?
-
@peterLang,因为我希望详细信息在同一个 ID 下。
-
@Code Rider,用于用户输入的网格视图和列表视图(如果可能)或仅用于显示结果的网格视图。
-
为什么不把你的主键分成两列(
10001, 1和10001, 2)?这可以为您节省很多问题...
标签: c# asp.net sql-server gridview