在UpdatePanel中设置DropDownList的SelectedValue

时间:2011-04-01 20:54:59

标签: c# asp.net drop-down-menu updatepanel selectedvalue

我有一组级联下拉列表,但我希望在页面加载时默认选择值为。 现在,我的下拉列表默认为DDL中的第一个值。 (ASP.NET C#)

和代码(问题是“DDL​​_Assignment”下拉列表)...

<tr>
        <td>
            <b>Position Type:</b>
        </td>
        <td>
            <asp:Label ID="Lbl_PositionType" runat="server" />
        </td>
    </tr>
    <tr id="TR_Occupation" runat="server">
        <td>
            <b>Select Occupation:</b>
        </td>
        <td>
            <asp:DropDownList ID="DDL_Occupation" runat="server" DataSourceID="DataSource_Occupation" DataTextField="Position" DataValueField="Position"
                AutoPostBack="True" OnSelectedIndexChanged="DDL_Occupation_SelectedIndexChanged">
            </asp:DropDownList>

            <asp:ObjectDataSource ID="DataSource_Occupation" runat="server" 
                OldValuesParameterFormatString="original_{0}" SelectMethod="GetPositions" 
                TypeName="HumanResourceTableAdapters.PositionTableAdapter">
                <SelectParameters>
                    <asp:ControlParameter ControlID="Lbl_PositionType" Name="PositionType" 
                        PropertyName="Text" Type="String" />
                </SelectParameters>
            </asp:ObjectDataSource>

            <asp:TextBox ID="TB_Occupation" runat="server" />
        </td>
    </tr>
    <tr>
        <td>
            <b>Select Assignment Name:</b>
        </td>
        <td>
            <asp:UpdatePanel ID="UP_Assignment" runat="server">
                <ContentTemplate>
                    <asp:DropDownList ID="DDL_Assignment" runat="server"
                         AutoPostBack="True"
                        OnSelectedIndexChanged="DDL_Assignment_SelectedIndexChanged" />
                    <asp:ObjectDataSource ID="DataSource_Assignment" runat="server" 
                        OldValuesParameterFormatString="original_{0}" SelectMethod="GetAssignments" 
                        TypeName="HumanResourceTableAdapters.PositionTableAdapter">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="DDL_Occupation" Name="Position" 
                                PropertyName="SelectedValue" Type="String" />
                            <asp:ControlParameter ControlID="Lbl_PositionType" Name="PositionType" 
                                PropertyName="Text" Type="String" />
                        </SelectParameters>
                    </asp:ObjectDataSource>
                    <asp:ObjectDataSource ID="DataSource_AssignmentHourly" runat="server" 
                        OldValuesParameterFormatString="original_{0}" 
                        SelectMethod="GetAssignmentByPosType" 
                        TypeName="HumanResourceTableAdapters.PositionTableAdapter">
                        <SelectParameters>
                            <asp:ControlParameter ControlID="Lbl_PositionType" Name="PositionType" 
                                PropertyName="Text" Type="String" />
                        </SelectParameters>
                    </asp:ObjectDataSource>
                    <asp:TextBox ID="TB_Assignment" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="DDL_Occupation" EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>

        </td>
    </tr>

代码背后 “posRow.Assignment”输出正确的值...下拉列表由于某种原因没有接受它

Position1TableAdapter position1TableAdapter =
                new Position1TableAdapter();
            HumanResource.Position1Row posRow =
                position1TableAdapter.GetData(Convert.ToInt32(Request.QueryString["PositionID"]))[0];

            DDL_Assignment.DataTextField = "AssignmentName";
            DDL_Assignment.DataValueField = "AssignmentName";
            DDL_Assignment.DataSourceID = "DataSource_Assignment";

            DDL_Occupation.SelectedValue = posRow.Position;
            DDL_Assignment.SelectedValue = posRow.Assignment;
            TB_Assignment.Text = posRow.Assignment;
            TB_Replaced.Text = posRow.Replaced;
            DDL_PositionDays.SelectedValue = posRow.PositionDays.ToString();
            DDL_ContractDays.SelectedValue = posRow.ContractDays.ToString();
            DDL_PositionHours.SelectedValue = posRow.PositionHours.ToString();
            DDL_Location.SelectedValue = posRow.Location.ToString();
            TB_Contract.Text = posRow.IsContractInformationNull() ? null : posRow.ContractInformation;
            DDL_1yrContractReason.SelectedValue = posRow.Isposition_1yrcntrctrsnIDNull() ? null : posRow.position_1yrcntrctrsnID.ToString();
            RBL_Administrator.SelectedValue = posRow.Administrator.ToString();
            RBL_CertifiedSalarySchedule.SelectedValue = posRow.clas_CertifiedScheduleInd.ToString();
            RBL_OvertimeExempt.SelectedValue = posRow.position_OvertimeExemptInd.ToString();
            RBL_ExtendedContractExempt.SelectedValue = posRow.position_ExtContractExemptInd.ToString();
            RBL_LongevityException.SelectedValue = posRow.Longevity_Exception_Indicator.ToString();
            RBL_NoStepIncrease.SelectedValue = posRow.position_NoStepInd.ToString();
            RBL_JobShare.SelectedValue = posRow.position_JobShareInd.ToString();

如果需要任何其他详细信息,请与我们联系

3 个答案:

答案 0 :(得分:0)

您需要添加您的代码,在页面加载中设置下拉列表选择值。当您在触发事件中更改下拉列表的选定值时,它不会设置所选值。 只需在页面的页面加载事件中调用您的setter方法。你的问题将得到解决。

答案 1 :(得分:0)

而不是

DDL_Occupation.SelectedValue = posRow.Position;

您需要SelectedIndex吗?

DDL_Occupation.SelectedIndex = posRow.Position;

答案 2 :(得分:0)

需要在每个ddl之前进行数据绑定

Position1TableAdapter position1TableAdapter =
                new Position1TableAdapter();
            HumanResource.Position1Row posRow =
                position1TableAdapter.GetData(Convert.ToInt32(Request.QueryString["PositionID"]))[0];

            DDL_Assignment.DataTextField = "AssignmentName";
            DDL_Assignment.DataValueField = "AssignmentName";
            DDL_Assignment.DataSourceID = "DataSource_Assignment";

            DDL_Occupation.DataBind();
            DDL_Occupation.SelectedValue = posRow.Position;

            DDL_Assignment.DataBind();
            DDL_Assignment.SelectedValue = posRow.Assignment;

            TB_Replaced.Text = posRow.IsReplacedNull() ? null : posRow.Replaced;

            DDL_PositionDays.DataBind();
            DDL_PositionDays.SelectedValue = posRow.PositionDays.ToString();

            DDL_ContractDays.DataBind();
            DDL_ContractDays.SelectedValue = posRow.ContractDays.ToString();

            DDL_PositionHours.DataBind();
            DDL_PositionHours.SelectedValue = posRow.PositionHours.ToString();