免责声明 - 是的我用谷歌搜索,显然我没有找到解决方案。
Webform,ASP.NET,SQL,没有sqldatasource - 所有代码隐藏。
好吧,看起来我误解了我的应用程序出了什么问题。
使用.SelectedValue确实获得了下拉项的正确值 - 但仅在我的Insert()方法中,.SelectedValue在我的UpdateMethod中返回空。
插入()
using (con = new SqlConnection(conString))
{
try
{
con.Open();
cmd = new SqlCommand("INSERT INTO Building(Building_Code, Building_Name, Company_ID, Active) VALUES(@BuildingCode, @BuildingName, @CompanyID, @Active)", con);
cmd.Parameters.AddWithValue("@BuildingCode", txtBuildingCode.Text);
cmd.Parameters.AddWithValue("@BuildingName", txtBuildingName.Text);
cmd.Parameters.AddWithValue("@CompanyID", ddlCompanyCode.SelectedValue);
cmd.Parameters.AddWithValue("@Active", chkBuildingActive.Checked);
cmd.ExecuteNonQuery();
}
更新()
using (con = new SqlConnection(conString))
{
try
{
if (ddlCompanyCode.SelectedIndex >= 1)
{
con.Open();
cmd = new SqlCommand("UPDATE Building SET Building_Name = @BuildingName, Company_ID = @CompanyID, Active = @Active WHERE Building_ID = @BuildingID", con);
cmd.Parameters.AddWithValue("@BuildingID", selectedRecordID);
cmd.Parameters.AddWithValue("@BuildingName", txtBuildingName.Text);
cmd.Parameters.AddWithValue("@CompanyID", ddlCompanyCode.SelectedValue);
cmd.Parameters.AddWithValue("@Active", chkBuildingActive.Checked);
cmd.ExecuteNonQuery();
}
}
catch (SqlException sqlExc)
{
MessageBox.Show(sqlExc.Message);
}
}
BindForm()
try
{
con.Open();
reader = cmd.ExecuteReader();
while (reader.Read())
{
txtBuildingCode.Text = reader["Building_Code"].ToString();
txtBuildingName.Text = reader["Building_Name"].ToString();
ddlCompanyCode.SelectedItem.Text = reader["Company_Code"].ToString();
chkBuildingActive.Checked = reader.GetBoolean(reader.GetOrdinal("Active"));
}
}
catch (SqlException sqlExc)
{
MessageBox.Show(sqlExc.Message);
}
什么会导致这个问题?
答案 0 :(得分:0)
而是使用ddlCompanyCode.DataValueField
使用SelectedValue
属性
cmd.Parameters.AddWithValue("@CompanyID", ddlCompanyCode.SelectedValue);
你也可以使用SelectedItem.Value
之类的
cmd.Parameters.AddWithValue("@CompanyID", ddlCompanyCode.SelectedItem.Value);
答案 1 :(得分:0)
呜!我从朋友那里得到了解决方案。
为公司代码值
创建一个局部变量 string strCompany = "";
将datareader的内容读取到变量
txtBuildingCode.Text = reader["Building_Code"].ToString();
txtBuildingName.Text = reader["Building_Name"].ToString();
strCompany = reader["Company_Code"].ToString();
然后通过
将下拉菜单的SelectedIndex设置为项目索引ddlCompanyCode.SelectedIndex = ddlCompanyCode.Items.IndexOf(ddlCompanyCode.Items.FindByText(strCompany));
感谢大家的帮助!