FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

查看: 146|回复: 2

下拉框通过数据库绑定数据无法获取到选择的项

[复制链接]
发表于 2020-6-24 10:48:56 | 显示全部楼层 |阅读模式
反馈BUG
程序版本: 6.1.0
浏览器: Chrome 
BUG截图:
BUG地址: -
本帖最后由 zj880808 于 2020-6-24 10:56 编辑

前端代码:
<f:SimpleForm ID="SimpleForm1" CssClass="blockpanel" BodyPadding="10px" runat="server" EnableCollapse="false"
            ShowBorder="true" Title="下拉列表(初始值为空,可编辑,强制选择)" ShowHeader="true">
            <Items>
                <fropDownList runat="server" ID="DropDownList1" EnableEdit="true" AutoSelectFirstItem="false" EmptyText="请选择一项">
                </fropDownList>
                <f:Button ID="btnSelectItem6" Text="选中[可选项6]" runat="server"
                    CssClass="marginr">
                </f:Button>
                <f:Button ID="btnGetSelection" Text="获取此下拉列表的选中项" runat="server">
                </f:Button>
            </Items>
        </f:SimpleForm>


后端代码:
protected void Page_Load(object sender, EventArgs e)
        {
            using (SqlConnection getconn = new SqlConnection(ConfigurationManager.AppSettings["connstr"].ToString()))
            {
                try
                {
                    DataSet ds = new DataSet();
                    getconn.Open();
                    SqlDataAdapter sda = new SqlDataAdapter("select name,database_id from sys.databases",getconn);
                    sda.Fill(ds, "master");
                    DropDownList1.DataTextField = "name";
                    DropDownList1.DataValueField = "database_id";
                    DropDownList1.DataSource = ds.Tables[0];
                    DropDownList1.DataBind();
                }
                catch(Exception se)
                {
                    throw se;
                }
            }
        }

        protected void btnSelectItem6_Click(object sender, EventArgs e)
        {
        }

        protected void btnGetSelection_Click(object sender, EventArgs e)
        {
            if (DropDownList1.SelectedItem != null)
            {
                labResult.Text = String.Format("选中项:{0}(值:{1})", DropDownList1.SelectedItem.Text, DropDownList1.SelectedValue);
            }
            else
            {
                labResult.Text = "无选中项";
            }
        }
    }

代码大部分都是直接复制的在线示例,唯一的区别就是数据是从数据库获取绑定的。

            DataTable table = new DataTable();
            DataColumn column1 = new DataColumn("MyText", typeof(String));
            DataColumn column2 = new DataColumn("MyValue", typeof(String));
            table.Columns.Add(column1);
            table.Columns.Add(column2);

            DataRow row = table.NewRow();
            row[0] = "可选项1";
            row[1] = "1";
            table.Rows.Add(row);
            row = table.NewRow();

            row[0] = "可选项2";
            row[1] = "2";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选项3";
            row[1] = "3";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选项4";
            row[1] = "4";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选项5";
            row[1] = "5";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选项6";
            row[1] = "6";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选择项7";
            row[1] = "7";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选择项8";
            row[1] = "8";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "可选择项9";
            row[1] = "9";
            table.Rows.Add(row);

            row = table.NewRow();
            row[0] = "这是一个很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的可选项";
            row[1] = "10";
            table.Rows.Add(row);

            DropDownList1.DataTextField = "MyText";
            DropDownList1.DataValueField = "MyValue";
            DropDownList1.DataSource = table;
            DropDownList1.DataBind();


通过这种方式绑定数据问题依旧。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2020-6-24 11:04:43 | 显示全部楼层
问题找到了。数据绑定要写在客户端里面 也就是 要写在 isPostback 里面
回复 支持 反对

使用道具 举报

发表于 2020-6-26 23:01:21 | 显示全部楼层
zj880808 发表于 2020-6-24 11:04
问题找到了。数据绑定要写在客户端里面 也就是 要写在 isPostback 里面

是的,这是一个常见问题。

Page_Load会在页面初始化和回发时都执行,所以你看官网示例,基本上所有的 Page_Load 里面都有一个 !IsPostBack 的判断。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|FineUI 官方论坛 ( 皖ICP备13005369号-1 )

GMT+8, 2020-7-12 15:07 , Processed in 0.105118 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表