微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 将DropDownList绑定到ListItemCollection,并将值添加到DDL

我在商务舱中有这个代码.
internal ListItemCollection GetAllAgents()
    {
        DataTable table = dao.GetAllAgents();
        ListItemCollection list = new ListItemCollection();

        foreach (DaTarow row in table.Rows)
        {
            list.Add(new ListItem(row["agent_name"].ToString(),row["id"].ToString()));
        }
        return list;
    }

我毫无问题地从桌子上取回了桌子.我看文本和值属性是否正确填充(1对于一些非常棒的文字?)并返回到演示文稿中我像这样绑定

Helper helper = new Helper();
 ListItemCollection agentList = helper.GetAllAgents();
 agentList.Insert(0,"");
 this.ddlAgent.DataSource = agentList;
 this.ddlAgent.DataBind();

当我得到所选的值

this.ddlAgent.SelectedValue

我希望看到代理ID,但我得到的是文本(代理名称),所以我尝试了这个

this.ddlAgent.SelectedItem.Value

但我得到了同样的结果.然后我看一下生成的html源代码,看起来像这样

<select name="ctl00$ContentPlaceHolder1$ddlAgent" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$ddlAgent\',\'\')',0)" id="ctl00_ContentPlaceHolder1_ddlAgent">
        <option selected="selected" value=""></option>
        <option value="agent1_name">agent1_name</option>
        <option value="agent2_name">agent2_name</option>

所有代理商都在继续这种模式.我希望我只是做一些骨头的事情,你可以在解决我的问题时嗤之以鼻:)

多谢你们.

编辑:如果我这样做

ListItemCollection agentList = helper.GetAllAgents();
agentList.Insert(0,"");
foreach (ListItem agent in agentList)
{
    this.ddlAgent.Items.Add(agent);
}

它工作正常.

解决方法

尝试做:
this.ddlAgent.DataTextField = "Text";
this.ddlAgent.DataValueField = "Value";
this.ddlAgent.DataSource = agentList;
this.ddlAgent.DataBind();

也应该工作,它可能比没有理由循环列表更好.

更新发现另一种(更短)的方式:

this.ddlAgent.Items.AddRange(agentList.ToArray());
this.ddlAgent.DataBind();

通过使用Items.AddRange()而不是使用DataSource设置源,ASP能够确定它应该使用Text和Value属性.

原文地址:https://www.jb51.cc/csharp/98946.html

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

相关推荐