1

我有以下标记:

   <td>
      <asp:DropDownList runat="server" ID="ddlExtRouteBusyID" style="width: 320px;" />
   </td>

其背后的代码在页面加载时执行:

//Bind the route busy drop down list:
DataTable dr = /*[some DataTable returned from a wrapper to an RDBMS*/;
this.ddlExtRouteBusyID.DataSource = dt;
this.ddlExtRouteBusyID.DataTextField = "description";
this.ddlExtRouteBusyID.DataValueField = "id";
this.ddlExtRouteBusyID.DataBind();

我似乎无法根据 SelectedItem/Value 的值访问描述和 ID 数据。例如,如果我选择第二个列表项,SelectedIndex 为 1,但描述可能是“server2”,ID 可能是 1118。如何提取描述和 ID 值?

谢谢。

4

3 回答 3

3

您可以使用以下内容获取文本和值:

ddlExtRouteBusyID.SelectedItem.Text
ddlExtReouteBusyID.SelectedItem.Value

如果这不起作用,则页面正在执行的操作可能存在其他问题,因为我刚刚验证了这些对我有用。

于 2013-08-09T20:36:27.120 回答
2

有些事情没有解决,所以这里有一些我想到的选项..

1)如果您想访问值和文本客户端,您可以使用简单的JQUERY,如下所示。

$("#ddlExtRouteBusyID.ClientID").change(function() {
   selectval();
});
$("#ddlExtRouteBusyID.ClientID").click(function() {
   selectval();    
});

function selectval(){
   alert('Text:' + $('#ddlExtRouteBusyID.ClientID :selected').text() + ', value = ' + $("#ddlExtRouteBusyID.ClientID").val());    
}

2)使用服务器端的值然后如何?,我的意思是onSelectedIndexChange或任何ButtonClick事件

注意:要使用任何方式,下拉列表数据绑定方法应保留在if(!IsPostBack)

于 2013-08-11T18:57:53.100 回答
1

您需要在DropDownList定义中添加两个属性,OnSelectedIndexChanged并且AutoPostBack,如下所示:

<asp:DropDownList runat="server" ID="ddlExtRouteBusyID" style="width: 320px;" 
    OnSelectedIndexChanged="Index_Changed" AutoPostBack="true" />

现在您需要在代码隐藏中编写代码来处理SelectedIndexChanged事件,如下所示:

protected void Index_Changed(Object sender, EventArgs e) 
{
   // Put logic here to grab values from drop down list
   Label1.Text = "You selected " + ddlExtRouteBusyID.SelectedItem.Text +
                 " with a value of " + ddlExtRouteBusyID.SelectedItem.Value +
                 ".";
}

注意:AutoPostBack=true是下拉列表值更改时导致页面回发到服务器的原因;否则下拉列表更改事件将不会触发。

于 2013-08-09T20:38:02.070 回答