2

我有一组级联下拉菜单,但我希望在页面加载时默认的 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();

让我知道是否需要任何其他详细信息

4

3 回答 3

0

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

于 2011-04-01T21:06:13.357 回答
0

代替

DDL_Occupation.SelectedValue = posRow.Position;

你需要SelectedIndex吗?

DDL_Occupation.SelectedIndex = posRow.Position;
于 2011-04-01T21:08:45.927 回答
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();
于 2011-04-05T21:54:56.413 回答