C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法

C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法1、C#ASP.NETDROPDOWNLIST控件绑定数据库,数据库内容如下数据库有3个字段:id,name,map。数据库只有1个表,表名为table12、前台代码如下:<asp:DropDownListID=”DropDownList1″runat=”server”style=”z-index:1;left:360px;top:80px;position:absolute;height:35px;…

大家好,又见面了,我是你们的朋友全栈君。

1、C# ASP.NET  DROPDOWNLIST控件绑定数据库,数据库内容如下

     数据库有3个字段:id,name,map。

     数据库只有1个表,表名为  table1    

C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法

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

C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法

但是打断点观察得到的值始终是第一项的值,参见下图: 

C# ASP.NET DROPDOWNLIST控件绑定数据库,用DropDownList1.SelectedValue.ToString 读取的选项值始终是第一项的值的解决方法

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161277.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 字符数组 合并_字符数组合并?c数组合并?java数组合并问题「建议收藏」

    java 字符数组 合并_字符数组合并?c数组合并?java数组合并问题「建议收藏」本文关键词数组合并,由教案网整理发布publicstaticString[]getOneArray(){String[]a={“0″,”1″,”2”};String[]b={“0″,”1″,”2”};String[]c=newString[a.length+b.length];for(intj=0;j<a.length;++j)…

    2022年6月23日
    28
  • padStart()与padEnd()「建议收藏」

    padStart()与padEnd()「建议收藏」padStart()padStart()方法用另一个字符串填充当前字符串(如果需要的话,会重复多次),以便产生的字符串达到给定的长度。从当前字符串的左侧开始填充。语法str.padStart(targetLength[,padString])参数:targetLength:当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。padString:可选填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截

    2025年9月5日
    6
  • 什么是倒排索引?

    什么是倒排索引?不多说,直接上干货!欢迎大家,关注微信扫码并加入我的4个微信公众号:大数据躺过的坑Java从入门到架构师人工智能躺过的坑Java全栈大联盟每天都有大量的学习视频资料和精彩技术文章推送…

    2022年7月3日
    20
  • Bluetooth flow control

    Bluetooth flow controlBaseband4.5.3FlowcontrolSincetheRXACLbuffercanbefullwhileanewpayloadarrives,flowcontrolisrequired.TheheaderfieldFLOWinthereturnTXpacketmayuseSTOPorGOinorderto…

    2022年6月5日
    27
  • SpringBoot使用Websocket(一)

    SpringBoot使用Websocket(一)webSocket是HTML5的一种新协议,它实现了服务端与客户端的全双工通信,建立在传输层,tcp协议之上,即浏览器与服务端需要先建立tcp协议,再发送webSocket连接建立请求。webSocket的连接:客户端发送请求信息,服务端接受到请求并返回相应的信息。连接建立。客户端发送http请求时,通过Upgrade:webSocketConnection:Upgrade告知服务器需要建…

    2022年7月27日
    12
  • 雷达篇(二)线性调频信号公式推导及matlab仿真

    雷达篇(二)线性调频信号公式推导及matlab仿真线性调频信号的数学表达式:其中,t是时间变量,单位为秒(s);T为脉冲持续时间(周期);K是线性调频率,单位是Hz/s;角度(单位为弧度)表达式:…

    2022年5月31日
    85

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号