大家好,又见面了,我是你们的朋友全栈君。
1、C# ASP.NET DROPDOWNLIST控件绑定数据库,数据库内容如下
数据库有3个字段:id,name,map。
数据库只有1个表,表名为 table1
2、前台代码如下:
<asp:DropDownList ID="DropDownList1" runat="server" style="z-index: 1; left: 360px; top: 80px; position: absolute; height: 35px; width: 220px; bottom: 343px">
</asp:DropDownList>
3、后台代码如下:
public static DataTable Table(string sql)
{
using (MySqlConnection conn = new MySqlConnection(ConnStr))
{
MySqlDataAdapter sda = new MySqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
}
static string ConnStr = "Server=localhost;UserId=root;Password=12345678;Database=reservoirinfo;pooling=false;CharSet=utf8;port=3306";
protected void Page_Load(object sender, EventArgs e)
{
string sql = string.Format(" select * from table1");
DropDownList1.Items.Clear();
DropDownList1.DataSource = Table(sql);;
DropDownList1.DataTextField = "name";
DropDownList1.DataValueField = "id";
DropDownList1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
string ss1 = DropDownList1.SelectedValue.ToString();
}
4、网页运行画面
明明选中的是第二项
但是打断点观察得到的值始终是第一项的值,参见下图:
5、解决方法
Page_Load(object sender, EventArgs e) 新增加了一行如下代码:
if (!IsPostBack)
{
......
}
即可解决,不加入此判断,“SelectedIndexChanged”事件中ID会一直获取的是下拉列表的首行ID。
6、解决后完整的代码
public static DataTable Table(string sql)
{
using (MySqlConnection conn = new MySqlConnection(ConnStr))
{
MySqlDataAdapter sda = new MySqlDataAdapter(sql, conn);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
}
static string ConnStr = "Server=localhost;UserId=root;Password=12345678;Database=reservoirinfo;pooling=false;CharSet=utf8;port=3306";
protected void Page_Load(object sender, EventArgs e)
{
string sql = string.Format(" select * from table1");
if (!IsPostBack)
{
DropDownList1.Items.Clear();
DropDownList1.DataSource = Table(sql); ;
DropDownList1.DataTextField = "id";//这才是要显示的字段
DropDownList1.DataValueField = "id";//必须绑定int类型,不写发布会出错
DropDownList1.DataBind();
DropDownList1.Items.Insert(0, new ListItem("--请你选择--")); //插入空项,此项必须放到数据绑定之后
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string ss1 = DropDownList1.SelectedValue.ToString();
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161277.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...