请教:ASP.NET DROPDOWNLIST绑定数据库,DropDownList1.SelectedValue.ToString 读取的值始终是第一项的值?

ba_wang_mao 2020-09-30 11:00:16
1、C#ASP.NET DROPDOWNLIST控件绑定数据库,数据库内容如下



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;
}
}

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、网页运行画面
明明选中的是第二项


为什么打断点,得到的始终是第一项的值呀!参见下图:




请问:
DROPDOWMLIST控件绑定数据库,明明下拉选项选择的是第2项或第3项,为什么用
DropDownList1.SelectedValue.ToString(); 读取的始终是第1项的值呢?






...全文
826 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ba_wang_mao 2020-09-30
  • 打赏
  • 举报
回复
网上说:当对DropDownList进行数据绑定后,要想实现获取DropDownList中值必须设置AppendDataBoundItems属性为True 我修改AppendDataBoundItems属性为True,还是没有解决。什么原因造成的呢?
libolei 2020-09-30
  • 打赏
  • 举报
回复
那直接在Page_Load方法第一行加 if (IsPostBack) { return; } 省得再加其他代码也出错
ba_wang_mao 2020-09-30
  • 打赏
  • 举报
回复
值正确。 我已经解决啦! 增加如下一行代码: if (!IsPostBack) 即可解决,不加入此判断,“SelectedIndexChanged”事件中校区ID会一直获取的是下拉列表的首行ID。 修改后的代码如下:
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();
       
        }
总之,Page_Load(object sender, EventArgs e) 新增加了一行代码
        if (!IsPostBack)
            {
libolei 2020-09-30
  • 打赏
  • 举报
回复
DropDownList1.DataSource = Table(sql); 调试一下 这行代码运行完之后看下DropDownList1.DataSource的值是否正确

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧