C# 如何保存dropdownlist的名称而不是其ID?
我一直在做一个我面临问题的项目 我有两个下拉列表,分别是选择类别(DDLCegory)和选择子类别(ddlsubcategory 当我保存数据时,我会将ID保存到数据库中,而不是类别名称和子类别名称这里是我的数据库值: 以下是我已经实现的后台代码:C# 如何保存dropdownlist的名称而不是其ID?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我一直在做一个我面临问题的项目 我有两个下拉列表,分别是选择类别(DDLCegory)和选择子类别(ddlsubcategory 当我保存数据时,我会将ID保存到数据库中,而不是类别名称和子类别名称这里是我的数据库值: 以下是我已经实现的后台代码: String constr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\PROJECT SEM6\Online Tours and Travels\App_Data\ToursandTrave
String constr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\PROJECT SEM6\Online Tours and Travels\App_Data\ToursandTravels.mdf;Integrated Security=True;User Instance=True";
string query = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindCategoryDropdown();
}
}
protected void btnpreviewwebsite_Click1(object sender, EventArgs e)
{
Response.Redirect("http://localhost:50550/Online Tours and Travels/index.aspx");
}
protected void btnlogout_Click(object sender, EventArgs e)
{
Session.Abandon();
Session.Clear();
Response.Redirect("http://localhost:50550/Online Tours and Travels/Admin Panel/LoginForm.aspx");
}
protected void BindCategoryDropdown()
{
//conenction path for database
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select * from category", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
ddlcategory.DataSource = ds;
ddlcategory.DataTextField = "Cat_name";
ddlcategory.DataValueField = "Cat_id";
ddlcategory.DataBind();
ddlcategory.Items.Insert(0, new ListItem("--Select--", "0"));
ddlsubcategory.Items.Insert(0, new ListItem("--Select--", "0"));
}
protected void ddlcategory_SelectedIndexChanged(object sender, EventArgs e)
{
int categoryid = Convert.ToInt32(ddlcategory.SelectedValue);
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select * from subcategory where catid=" + categoryid, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
ddlsubcategory.DataSource = ds;
ddlsubcategory.DataTextField = "subcatname";
ddlsubcategory.DataValueField = "subcatid";
ddlsubcategory.DataBind();
ddlsubcategory.Items.Insert(0, new ListItem("--Select--", "0"));
}
protected void btnsave_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(constr);
String pathName1 = "~/packageimages/" + Path.GetFileName(fileuploadpic1.PostedFile.FileName);
String pathName2 = "~/packageimages/" + Path.GetFileName(fileuploadpic2.PostedFile.FileName);
String pathName3 = "~/packageimages/" + Path.GetFileName(fileuploadpic3.PostedFile.FileName);
query =
"insert into package(packname,catid,categoryname,subcatname,packageprice,pic1,pic2,pic3,detail) values('"+txtpackagename.Text+"','"+txtcategoryid.Text+"','"+ddlcategory.Text+"','"+ddlsubcategory.Text+"','"+txtpackageprice.Text+"','"+pathName1+"','"+pathName2+"','"+pathName3+"','"+txtdetails.Text+"') ";
SqlCommand cmd = new SqlCommand(query, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
fileuploadpic1.SaveAs(Server.MapPath("~/packageimages/" + fileuploadpic1.FileName));
fileuploadpic2.SaveAs(Server.MapPath("~/packageimages/" + fileuploadpic2.FileName));
fileuploadpic2.SaveAs(Server.MapPath("~/packageimages/" + fileuploadpic3.FileName));
txtpackagename.Text = "";
txtcategoryid.Text = "";
txtpackageprice.Text = "";
txtdetails.Text = "";
string message = "Package Added !!";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(message);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
String constr=@“数据源=。\SQLEXPRESS;AttachDbFilename=D:\PROJECT SEM6\Online Tours and Travels\App\u Data\ToursandTravels.mdf;集成安全性=True;用户实例=True”;
字符串查询=”;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
BindCategorHydropdown();
}
}
受保护的无效btnpreviewwebsite\u Click1(对象发送者,事件参数e)
{
响应。重定向(“http://localhost:50550/Online 旅游和旅行/index.aspx”);
}
受保护的无效btnlogout\u单击(对象发送者,事件参数e)
{
会话。放弃();
Session.Clear();
响应。重定向(“http://localhost:50550/Online 旅游/管理面板/LoginForm.aspx”);
}
受保护的void bindCategorHydropdown()
{
//数据库的连接路径
SqlConnection con=新的SqlConnection(cont);
con.Open();
SqlCommand cmd=newsqlcommand(“从类别中选择*”,con);
SqlDataAdapter da=新的SqlDataAdapter(cmd);
数据集ds=新数据集();
da.填充(ds);
con.Close();
ddlcontegory.DataSource=ds;
ddlcontegory.DataTextField=“Cat_name”;
ddlcontegory.DataValueField=“Cat_id”;
ddlcontegory.DataBind();
ddlcography.Items.Insert(0,newlistItem(“--Select-”,“0”);
ddlsubcategory.Items.Insert(0,newlistItem(“--Select-”,“0”);
}
受保护的无效ddlcategory\u SelectedIndexChanged(对象发送方,事件参数e)
{
int categoryid=Convert.ToInt32(ddlcontegory.SelectedValue);
SqlConnection con=新的SqlConnection(cont);
con.Open();
SqlCommand cmd=new SqlCommand(“从catid=“+categoryid,con)”的子类别中选择*;
SqlDataAdapter da=新的SqlDataAdapter(cmd);
数据集ds=新数据集();
da.填充(ds);
con.Close();
ddlsubcategory.DataSource=ds;
ddlsubcategory.DataTextField=“subcatname”;
ddlsubcategory.DataValueField=“subcatid”;
ddlsubcategory.DataBind();
ddlsubcategory.Items.Insert(0,newlistItem(“--Select-”,“0”);
}
受保护的无效btnsave\u单击(对象发送方,事件参数e)
{
SqlConnection con=新的SqlConnection(cont);
String pathName1=“~/packageimages/”+Path.GetFileName(fileuploadpic1.PostedFile.FileName);
String pathName2=“~/packageimages/”+Path.GetFileName(fileuploadpic2.PostedFile.FileName);
String pathName3=“~/packageimages/”+Path.GetFileName(fileuploadpic3.PostedFile.FileName);
查询=
“在包(packname、catid、categoryname、subcatname、packageprice、pic1、pic2、pic3、detail)中插入值(“+txtpackagename.Text+”、“+txtcategoryid.Text+”、“+ddlcontegory.Text+”、“+ddlsubcategory.Text+”、“+txtpackageprice.Text+”、“+pathName1+”、“+pathName2+”、“+pathName2+”、“、“+pathName3+”、“+txtdailets.Text+”)));
SqlCommand cmd=新的SqlCommand(查询,con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
fileuploadpic1.SaveAs(Server.MapPath(“~/packageimages/”+fileuploadpic1.FileName));
fileuploadpic2.SaveAs(Server.MapPath(“~/packageimages/”+fileuploadpic2.FileName));
fileuploadpic2.SaveAs(Server.MapPath(“~/packageimages/”+fileuploadpic3.FileName));
txtpackagename.Text=“”;
txtcategoryid.Text=“”;
txtpackageprice.Text=“”;
txtdetails.Text=“”;
string message=“已添加软件包!!”;
System.Text.StringBuilder sb=新的System.Text.StringBuilder();
某人加上(“”);
sb.Append(“window.onload=function(){”);
某人加上(“警告(”);
某人附加(信息);
某人加上(“)};”;
某人加上(“”);
RegisterClientScriptBlock(this.GetType(),“alert”,sb.ToString());
}
请帮忙!谢谢控件的名称由aspnet本身生成。根据控件在控件树中的位置,它可能会变成这样:
ctl00$ContentPlaceHolder1$ctl00$TextBox1
但是如果你真的想得到这个名字,你可以使用UniqueID
string controlName = TextBox1.UniqueID;
控件的名称由aspnet本身生成。根据控件在控件树中的位置,它可能会变成这样:
ctl00$ContentPlaceHolder1$ctl00$TextBox1
但是如果你真的想得到这个名字,你可以使用UniqueID
string controlName = TextBox1.UniqueID;
回答您的问题-您需要使用
ddlcography。选择editem.Text
notddlcography.Text
但正如所建议的,首先要了解查询参数
例如关于
使用
语句,例如回答您的问题-您需要使用
ddlcography。选择editem.Text
notddlcography.Text
但正如所建议的,首先要了解查询参数
例如例如,关于
使用
语句在执行任何其他操作之前,您需要在bobby tables访问之前阅读、理解并开始使用参数化查询。您的代码是sql注入漏洞的教科书示例。至于手头的问题,你为什么要保存这个名字?如果您的结构已正确规范化,则包表中应该有ID,而不是名称。在执行任何其他操作之前,您需要在bobby tables访问之前阅读、理解并开始使用参数化查询。您的代码是sql注入漏洞的教科书示例。至于手头的问题,你为什么要保存这个名字?如果你的结构正确规范化,你应该在包表中有ID,而不是名称。非常感谢兄弟它对我的帮助thanx alot:)@Jury Golubev非常感谢兄弟它对我的帮助thanx alot:)@Jury Golubev