Как установить значение по умолчанию в раскрывающемся списке для использования ViewBag - PullRequest
0 голосов
/ 10 марта 2019

Я видел другие вопросы с таким же названием, которые задавались ранее. Я пробовал их, но они не работают.

У меня есть основной список, который я получаю так:

ViewBag.ProgramListChecker = manager.GetProgramListForCommittee(RegistrationId);

GetProgramListForCommittee метод заполняется как:

public List<ProgramListCheckerEntity> GetProgramListForCommittee(int RegistrationId)
    {
        try
        {
            List<ProgramListCheckerEntity> list = new List<ProgramListCheckerEntity>();
            DataTable dt = _repository.GetProgramListForCommittee(RegistrationId);

            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    ProgramListCheckerEntity obj = new ProgramListCheckerEntity();
                    obj.ItemName = dr.IsNull("ItemName") ? "" : dr["ItemName"].ToString();
                    obj.ResultOption = dr.IsNull("SelectedOptionName") ? "" : dr["SelectedOptionName"].ToString();
                    obj.Remarks = dr.IsNull("Remarks") ? "" : dr["Remarks"].ToString();
                    obj.CheckListRowId = dr.IsNull("CheckListRowId") ? 0 : Convert.ToInt32(dr["CheckListRowId"]);
                    obj.CommitteeActionId = dr.IsNull("CommitteeActionId") ? 0 : Convert.ToInt32(dr["CommitteeActionId"]);
                    obj.CommitteeRemarks = dr.IsNull("CommitteeRemarks") ? "" : dr["CommitteeRemarks"].ToString();
                    list.Add(obj);
                }
            }

            return list;
        }

И еще один список, который я использую для выпадающих значений:

 ViewBag.InspectionActionList = obj.GetMasterTableList("Master.InspectionAction", "ActionId", "ActionName", "");

Метод для этого: -

public List<DropDownEntity> GetMasterTableList(string TableName, string DataValueField, string DataTextField)
    {
        var parms = new Dictionary<string, object>();
        var spName = ConfigurationManager.AppSettings["GetMasterTableList"];

        parms.Add("@TableName", TableName);
        parms.Add("@DataValueField", DataValueField);
        parms.Add("@DataTextField", DataTextField);

        return DataTableToList(_dbAccess.GetDataTable(spName, parms));
    }

Я хочу иметь значение по умолчанию в раскрывающемся списке ViewBag.ProgramListChecker со списком, заполненным ViewBag.InspectionActionList. Хотя список заполнен, но значение по умолчанию не выбирается.

Это мой cshtml:

<table id="tblList" class="table dva-table dva-tborder agencygrid">
    <tbody>
        @{int counter = 0; }

        @foreach (var item in ViewBag.ProgramListChecker)
        {
            <tr>
                <td style="width:5%;text-align:center">
                    @(++counter)
                </td>
                <td style="width:25%;text-align:left">
                    @item.ItemName
                </td>
                <td style="width:10%;text-align:center">
                    @item.ResultOption
                </td>
                <td style="width:25%;text-align:center">
                    @item.Remarks                                    
                </td>
                <td style="width:15%;text-align:center">
                    @Html.DropDownListFor(m => m.CommitteeActionId, new SelectList(ViewBag.InspectionActionList, "DataValueField", "DataTextField", item.CommitteeActionId), new
               {
                   @id = "ddlAction",
                   @class = "form-control requiredValidation"
               })
                </td>
                <td style="width:35%;text-align:center">
                    <input type="text" id="CommitteeRemarks" value="@item.CommitteeRemarks" maxlength="1000" rows="10" class="form-control" />
                    <input type="hidden" id="CheckListRowId" value="@item.CheckListRowId" class="form-control" />
                </td>
            </tr>
        }
    </tbody>
</table>

1 Ответ

1 голос
/ 10 марта 2019

Сначала убедитесь, что item.CommitteeActionId и "DataValueField" в ViewBag.InspectionActionList относятся к одному типу, а затем используйте другое имя для DropDownList следующим образом:

@Html.DropDownList("ComActionId", new SelectList(ViewBag.InspectionActionList, "DataValueField", "DataTextField", item.CommitteeActionId), new
               {
                   @id = "ddlAction",
                   @class = "form-control requiredValidation"
               })

Здесь я использовал ComActionId например.Теперь это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...