如何在绑定时禁用列表框控件中的某些项

时间:2010-01-28 11:06:15

标签: asp.net javascript

我有一个像这样的值

的数据表
names
------
kumar
kiran
ram
bala
----
anu
sita
geetha
-----
asha
abc
tsdf
dsf
sdf
sdfrt
sdfsdfd
sdfdsfsdf
--------

我将我的表绑定到像这样的listview

ListItem ddlItem;
foreach (DataRow dr in dt.Rows)
{
ddlItem = new ListItem(dr["names"].ToString())
lbx.Items.Add(ddlItem);
}

这里甚至我需要绑定我的数据表,除了“-----”这些值之外的所有值。 它应该处于禁用模式,即使用户尝试选择它也不会被选中 我们怎样才能实现它。  对此的任何帮助都会很棒  谢谢

1 个答案:

答案 0 :(得分:1)

标准列表框控件无法执行此操作。您可以将ListItem上的Enabled属性设置为False,但这会从列表中删除该项。最好的解决方案是在选择其中一个破折号时使用一些JavaScript来更改列表框的selectedIndex。

将OnClick处理程序添加到列表框控件中:

<asp:ListBox ID="lbTesting" runat="server" OnClick="testSelectedItem();">

然后添加以下JavaScript函数以检查所选项目:

<script language="javascript" type="text/javascript">
    function testSelectedItem() {
        var lbTesting = document.getElementById('lbTesting');
        if (lbTesting[lbTesting.selectedIndex].innerText == '----') {
            lbTesting.selectedIndex = 0;
        }
    }
</script>

显然,如果您需要测试不同数量的破折号,或者如果您在用户选择虚线条目时需要不同的功能,则可以稍微使用JavaScript功能 - 目前它只是重置为列表中的第一项

最后,您应该在服务器端添加一个编辑,以确保未选中虚线条目,因为用户可能禁用了JavaScript。