显示两个数据字段' dropdownlist中的内容然后在点击时隐藏一个

时间:2016-01-07 18:07:35

标签: c# asp.net selecteditem dropdownbox

所以我想要做的是当你点击下拉列表时它会显示下拉列表中的两个项目。左侧将显示ID,右侧将显示文本。

所以看起来像(98739 |吸烟者)那么当你点击你想要的项目时,下拉列表只会显示"吸烟者"

我试过了

 string sqlGetClass = "select [code], [SnoMedCode] + ' | ' + [Descrip] as [fullDescrip] from LT__SmokingStatus";
        SqlCommand cmdSmoke = new SqlCommand(sqlGetClass, con);
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter(cmdSmoke);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlSmokeStat.DataSource = ds;
        ddlSmokeStat.DataTextField = "fullDescrip";
        ddlSmokeStat.DataValueField = "Code";
        ddlSmokeStat.DataBind();
        con.Close();

这很好,它在下拉列表中显示(98739 |吸烟者)。但是在我选择了这个项目后,无论如何都想知道从那里隐藏98739代码。我知道我正在设置并调用它。那么任何其他方式将它们组合起来按照我的意愿去做?

2 个答案:

答案 0 :(得分:1)

首先,我对标题进行了一些编辑以澄清任务(您没有隐藏列表中的其他项目,只是选定项目的一部分)。

基于该假设,最直接的解决方案是使用修改后的选择SQL语句重新查询相同的控件,如:"select [code], [Descrip] from LT__SmokingStatus"并相应地修改DataTextField绑定,如:ddlSmokeStat.DataTextField = "Descrip"; < / p>

此外,您需要在回发之间(例如,在会话变量中)保留Selected项,然后在绑定后显示它。否则,您可以通过Microsoft AJAX实现部分/条件网页呈现(使用UpdatePanel并指定Dropdown Trigger事件)。

有更高效的解决方案(例如,将数据字段的内容存储在List或Array或Dictionary中,并将Dropdown控件绑定到该数据结构,如文章Binding-ASP-NET-DropDownList中所述),但是它需要大量的代码修改。

此外,此任务可以通过在ASP.NET下拉控件呈现的HTML Select元素上使用Javascript代码片段来完成,但如果在客户端的计算机上禁用了Javascript,则该解决方案将无效。

希望这可能会有所帮助。 最好的问候,

答案 1 :(得分:1)

我个人会通过JavaScript,一个jQuery示例来做到这一点:

$('#<%= Sample.ClientId %>').blur(function () {
     var content = $('#<%= Sample.ClientId %> > option:selected').text().split('|');
      $('#<%= Sample.ClientId %> > option:selected').text(content)
});

这将是一个简单的方法,否则你需要锚定到Postback上。然后换行更新面板或者做某种形式的Ajax来处理服务器端。