C# 如何保存dropdownlist的名称而不是其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

我一直在做一个我面临问题的项目 我有两个下拉列表,分别是选择类别(DDLCegory)和选择子类别(ddlsubcategory

当我保存数据时,我会将ID保存到数据库中,而不是类别名称和子类别名称这里是我的数据库值: 以下是我已经实现的后台代码:

 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
not
ddlcography.Text

但正如所建议的,首先要了解查询参数 例如

关于
使用
语句,例如回答您的问题-您需要使用

ddlcography。选择editem.Text
not
ddlcography.Text

但正如所建议的,首先要了解查询参数 例如

例如,关于
使用
语句

在执行任何其他操作之前,您需要在bobby tables访问之前阅读、理解并开始使用参数化查询。您的代码是sql注入漏洞的教科书示例。至于手头的问题,你为什么要保存这个名字?如果您的结构已正确规范化,则包表中应该有ID,而不是名称。在执行任何其他操作之前,您需要在bobby tables访问之前阅读、理解并开始使用参数化查询。您的代码是sql注入漏洞的教科书示例。至于手头的问题,你为什么要保存这个名字?如果你的结构正确规范化,你应该在包表中有ID,而不是名称。非常感谢兄弟它对我的帮助thanx alot:)@Jury Golubev非常感谢兄弟它对我的帮助thanx alot:)@Jury Golubev