c#DataTable从表中添加数据
问题描述:
我有一个数据表被填充,但其中一个字段是从数据库连接派生的下拉列表。当我点击添加它时,总是添加相同的数据,尽管我选择了,然后删除列表中的第一个项目。c#DataTable从表中添加数据
ASPX代码
<asp:TableCell><asp:DropDownList runat="server" ID="txtProduct"></asp:DropDownList></asp:TableCell>
CS代码下拉列表中
public void Fill1()
{
string connectionString = WebConfigurationManager.ConnectionStrings["CRM2Sage"].ConnectionString;
using (SqlConnection _con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Products", _con))
{
cmd.Connection.Open();
SqlDataReader ddlValues;
ddlValues = cmd.ExecuteReader();
txtProduct.DataSource = ddlValues;
txtProduct.DataValueField = "Description";
txtProduct.DataTextField = "Description";
txtProduct.DataBind();
cmd.Connection.Close();
cmd.Connection.Dispose();
}
}
有什么想法就如何解决这一问题?
答
我认为您在页面加载时调用Fill1()
方法。当页面回传时,然后再次调用页面加载事件Fill1()
,您的选择将被清除。你需要在你的负载事件
if(!Page.IsPostBack)
{
Fill1();
}
答
我认为您错过了SQL语句的WHERE部分以及将DropDownList选择连接到SQL Statment的方法。喜欢的东西...
new SqlCommand("SELECT * FROM Products WHERE ProductID = " + txtProduct.SelectedValue , _con))
FYI:这只是为了说明,我绝不会放一行代码两步,我会用参数,我想补充的错误检查的船负荷。
+0
我没有Id来执行此操作,我有一个ProductCode可以完成相同的工作吗? – 2011-03-30 17:14:47
旁注:你命名一个DropDownList'txtProduct'?我会假设带有这个ID的控件是一个文本框。对你的问题:你是否绑定了DropDownList只有当!!Page.IsPostBack? – 2011-03-30 16:10:34
我想你会发现对'DataBind'的调用会将您的选择重置为第一项。 – 2011-03-30 16:19:18
此外,没有任何理由调用'cmd.Connection.Close'和'cmd.Connection.Dispose',因为在'using'块中有命令和连接。他们会自动处理。 – 2011-03-30 16:20:14