我有一个只有在点击GridView
的编辑按钮时才能看到的面板。
在该面板中是一个包含DropDownList
和TextBox
的表单,您可以在其中编写一个数字并将其添加到ListBox
。
当我点击按钮时,所有需要的数字都被添加到ListBox
。最终确定是向数据库添加数据。在Gridview
我的名字是从数据库连接的,因为我分别有Lastname和Firstname。
为了更容易,当我点击具有特定ID的“编辑”按钮时,我选择在DropDownList
中添加数据库。
单击“编辑”按钮时,显示错误:
由于对象的当前状态,操作无效。
在我添加DropDownList
的行中。我验证了我的数据库,我的表的名称,所有这些都是正确的。我甚至只尝试使用firstname,而不是连接,它也会出现同样的错误。我不知道出了什么问题。我希望你能帮助我。这是出现错误的代码。
protected void btnEditSO_Click(object sender, EventArgs e)
{
panelSO.Visible = true;
btnFinalizeSO.Text = " Update ";
Button but = (Button)sender;
GridViewRow grid = (GridViewRow)but.NamingContainer;
string select_sql_SOddl = "SELECT ID, (LASTNAMER | | ' ' | | FIRSTNAMER ) AS REFERENTNAME FROM REFERENT_SHIPPING WHERE ID=" + grid.Cells[14].Text;
using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["DBCS"].ToString()))
{
con.Open();
OracleCommand cmd1 = new OracleCommand(select_sql_SOddl, con);
OracleDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
ddlReferentShip.Items.Add(dr[0].ToString());
// ddlReferentShip.Items.Add(dr["REFERENTNAME"].ToString());
// ddlReferentShip.DataSource = dr1;
// ddlReferentShip.DataTextField = dr1["REFERENTNAME"].ToString();
// ddlReferentShip.DataValueField = dr1["ID"].ToString();
// ddlReferentShip.DataBind();
}
}
}
答案 0 :(得分:2)
您正在查看dr1.Read()
并阅读dr[0].Tostring()
在添加数据之前,还要尝试清除列表。如果您需要显示名称
,则索引应为1应该是
while (dr1.Read())
{
ddlReferentShip.Items.Add(dr1[1].ToString());
}
我猜您在.Text
试试这个
string select_sql_SOddl = "SELECT ID, (LASTNAMER | | ' ' | | FIRSTNAMER ) AS REFERENTNAME
FROM REFERENT_SHIPPING WHERE ID=" + Convert.ToInt32(grid.Cells[14].Text);
所有方法都尝试使用参数化查询来避免SQL INJECTION
答案 1 :(得分:0)
为什么在dr
作为datareader时从dr1
设置ddl项。
也许你可以试试这个:
protected void btnEditSO_Click(object sender, EventArgs e)
{
panelSO.Visible = true;
btnFinalizeSO.Text = " Update ";
Button but = (Button)sender;
GridViewRow grid = (GridViewRow)but.NamingContainer;
string select_sql_SOddl = "SELECT ID, (LASTNAMER | | ' ' | | FIRSTNAMER ) AS REFERENTNAME FROM REFERENT_SHIPPING WHERE ID=" + grid.Cells[14].Text;
using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["DBCS"].ToString()))
{
con.Open();
OracleCommand cmd = new OracleCommand(select_sql_SO, con);
OracleCommand cmd1 = new OracleCommand(select_sql_SOddl, con);
OracleDataReader dr = cmd.ExecuteReader();
OracleDataReader dr1 = cmd1.ExecuteReader();
int i=0;
while (dr1.Read())
{
ddlReferentShip.Items.Add(dr1[1].ToString());
i++;
// ddlReferentShip.Items.Add(dr["REFERENTNAME"].ToString());
// ddlReferentShip.DataSource = dr1;
// ddlReferentShip.DataTextField = dr1["REFERENTNAME"].ToString();
// ddlReferentShip.DataValueField = dr1["ID"].ToString();
// ddlReferentShip.DataBind();
}
}
}