protected void wbsDropDown_Change(object sender, EventArgs e)
{
//txtWBSDesc.Text = wbsDropDown.SelectedItem.Value.ToString();
//txtWBSDesc.Text = wbsDropDown.SelectedValue.ToString().Trim();
txtWBSDesc.Text = this.wbsDropDown.SelectedValue.ToString().Trim();
}
总是正确返回一些DropDownList项的值。列表中的错误值随机返回。 在这里Aspx 这是下面的aspx
<table cellpadding="0" cellspacing="0" border="0" class="ms-long">
<tr>
<td style="padding-right:2px;" class="ms-formbody">
<asp:DropDownList AutoPostBack="true" runat="server" ID="wbsDropDown" width="115px" CssClass="text" OnSelectedIndexChanged="wbsDropDown_Change" />
</td>
<td align="left">
<asp:Label ID="lblWBSNoName" runat="server" Text="" ></asp:Label>
<asp:TextBox ID="txtWBSDesc" width="350px" runat="server" class="ms-textfield ms-long ms-readonly"></asp:TextBox>
</td>
</tr>
</table>
此处绑定数据
//update WBS dropdown by ram
DataTable dtWBS = MMHE.iPS.Lib.AcctCostCentre.GetWBS_DT(txtJobNo.Text.ToString());
wbsDropDown.DataSource = dtWBS;
wbsDropDown.DataTextField = "WBSElement";
wbsDropDown.DataValueField = "Descrip";
wbsDropDown.DataBind();
wbsDropDown.Items.Insert(0, new ListItem("--Select--", "0"));
if (!string.IsNullOrEmpty(JobNo.eWBSElement.ToString()))
{
wbsDropDown.SelectedItem.Text = JobNo.eWBSElement.ToString();
}
else
{
wbsDropDown.SelectedItem.Text = JobNo.eClaim_WBSElement.ToString();
}
答案 0 :(得分:0)
问题在于您设置DropDown的选定项目的方式。
而不是: wbsDropDown.SelectedItem.Text = JobNo.eWBSElement.ToString();
绑定并插入默认条目后使用以下方法(&#34; - 选择 - &#34;)。
您需要根据值设置选择。
wbsDropDown.ClearSelection(); //making sure the any preselection has been cleared
wbsDropDown.Items.FindByValue(value).Selected = true;
注意:此外,如果您在PageLoad()中有绑定代码,请确保未在每次回发时调用绑定代码。而是在绑定之前检查IsPostBack属性。
答案 1 :(得分:0)
最后我最终得到了这个解决方案..
<script type="text/javascript">
function WBSDropDown(ddl)
{
document.getElementById('<%=txtWBSDesc.ClientID %>').value = ddl.value;
}
</script>
<asp:DropDownList AutoPostBack="false" onchange="WBSDropDown(this);" runat="server" ID="wbsDropDown" width="115px" CssClass="text" OnSelectedIndexChanged="wbsDropDown_Change" />