我有一个asp:DropDownList
的表单,其中填充了Item_Description
表中Item
列的内容。
我想允许用户从下拉列表中选择一个项目,并在提交表单时,使用C#/ T-SQL将所选项目的ItemID
值插入Orders表中。
理论上我可以使用一些冗长的if / else语句来实现这一点,但这似乎太简单了,不需要这么多代码。
我可以通过为参数分配asp:Textbox
值并在提交时插入它来更新其他表。当用户从列表中选择相关项时,我似乎无法弄清楚如何将ItemID
传递给Orders
表。
P.S。我已经建立了与我的数据库的连接,防止SQL注入等。
下拉列表:
ID =" ddlItems"
表格代码:
CREATE TABLE Item
(
ItemID int primary key,
Item_Description varchar(255)
);
CREATE TABLE Orders
(
OrderID int primary key,
Order_Item varchar(255)
);
提交按钮点击事件的代码隐藏方法:
protected void Submit_Click(object sender, EventArgs e)
{
SqlConnection conn;
SqlCommand comm;
SqlDataReader reader;
conn = new SqlConnection("Server=*omitted*");
comm = new SqlCommand("INSERT INTO Orders VALUES @ItemID;", conn);
comm.Parameters.Add("@ItemID", System.Data.SqlDbType.Int);
comm.Parameters["@ItemID"].Value = <<<This is where I need help>>>;
try
{
conn.Open();
reader = comm.ExecuteReader();
reader.Close();
}
catch
{
results.Text = "Error adding data. ";
}
finally
{
// Close the connection
conn.Close();
results.Text = "Added data.";
}
}
下拉列表绑定:
<asp:DropDOwnList ID="ddlItems" runat="server" AutoPostBack="True" AppendDataBoundItems="True" DataSourceID="SqlDataSource1" DataTextField="Item_Description" DataValueField="Item_Description">
<asp:ListItem Value=""></asp:ListItem>
<asp:DropDownList>
答案 0 :(得分:0)
根据您的问题,我认为您插入查询是否N#39; t要求条件只删除条件
绑定DropDown代码
DataSet ds = new DataSet();
Cmd.CommandText = sqlcmd;
Cmd.CommandTimeout = this.Timeout;
Cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = Cmd;
sda.Fill(ds);
ddl.DataSource = ds.dt[0];
ddl.DataTextField = ds.dt[0][COlumnname]
ddl.DataValueField = ds.dt[0][ColumnName];
ddl.DataBind();
答案 1 :(得分:0)
I would join the Item and Orders table by ItemID, not Item_Description.
CREATE TABLE Item
(
ItemID int primary key,
Item_Description varchar(255)
);
CREATE TABLE Orders
(
OrderID int primary key,
ItemID int
);
I would set a referential constraint on ItemID. ddlItems should have DataValueField of ItemID and DataTextField of Item_Description.
Assuming ItemID and OrderID are auto-incrementing, you could write:
SqlCommand comm = new SqlCommand("INSERT INTO Orders (ItemID) VALUES (@itemID)");
这也假设只有一个ItemID可以与一个Order关联,否则你需要Item,Order和OrderItemAsc表。
答案 2 :(得分:0)
我假设您将下拉列表与Item
表绑定。
所以请遵循这种方法。
查询将是(对于从项目表中绑定下拉列表数据)
select * from item
在C#中
ddlItems.DataSource = "your data table in which you are taking result of above query";
ddlItems.DataBind();
(我认为你已经完成了上述步骤)
现在只需在源代码中的下拉列表中添加两个属性即可。
<asp:DropDownList ID="ddlItems" runat="server" DataTextField="Item_Description" DataValueField="ItemID " >
现在,您可以直接访问c#code
下拉列表中所选项目的ID comm.Parameters["@ItemID"].Value= ddlItems.SelectedItem.Value;
<强> 修改 强>
现在查看您编辑的问题,您只需要更改DataValueField="ItemID"
:)