0

objectdatasource にバインドするフォームビューがあります。どの objectdatasource がリスト コレクションから値を取得しているか。カスケード ドロップダウンリストを実装するために、ドロップダウンリスト用に切り替えなければならなかったテキスト ボックス コントロールはほとんどありません。値が正常に入力されていますカスケードドロップダウンリストはうまく機能しますが、挿入時にこの迷惑で役に立たないメッセージが表示されます

"インデックスが配列の範囲外だった。" だから私はこれを理解しようとしてきましたが、できません。

ドロップダウンリストが問題の原因であると仮定すると、Text='<%# Bind("GroupID") %> がないように手動でバインドしているため、このコードをコード ビハインドに追加しようとしました

  protected void formGroupInput_ItemInserting(object sender, FormViewInsertEventArgs e)
{

    if (formGroupInput.CurrentMode == FormViewMode.Insert)
    {
                  e.Values["ddlStartTime"] = ((DropDownList)((FormView)sender).FindControl("ddlStartTime")).SelectedItem;
       e.Values["ddlEndTime"] = ((DropDownList)((FormView)sender).FindControl("ddlEndTime")).SelectedItem;
       e.Values["ddlRoomName"] = ((DropDownList)((FormView)sender).FindControl("ddlRoomName")).SelectedItem;
       e.Values["ddlJackNumber"] = ((DropDownList)((FormView)sender).FindControl("ddlJackNumber")).SelectedItem;
       e.Values["ddlInternetType"] = ((DropDownList)((FormView)sender).FindControl("ddlInternetType")).SelectedItem;
    }

}

DLL の入力メソッドにブレークポイントを配置してデバッグしようとしたときに、エラーが表示される前にまだ到達していないため、これと関係があると推測しています。

ありがとう

ここに画像の説明を入力

ドロップダウンリストに入力するコード

  protected void formGroupInput_DataBound(object sender, EventArgs e)
{


    if (formGroupInput.CurrentMode == FormViewMode.Insert)
    {
        DropDownList roomName = (DropDownList)(formGroupInput.Row.FindControl("ddlRoomName"));
        roomName.DataSource = getrooms.FetchRooms();
        roomName.DataTextField = "RoomName";
        roomName.DataValueField = "intRoom";
        roomName.DataBind();

       ****Same concept for other 2 dropdownlist ******


    }
}

ページロード私はこれを呼び出します

 protected void Page_Load(object sender, EventArgs e)
{

    DropDownList startTime = (DropDownList)(formGroupInput.Row.FindControl("ddlStartTime"));


    if (startTime.Items.Count == 0)
    {
        startTime.Items.Add("12:00AM");
        startTime.Items.Add("12:30AM");
        for (int i = 1; i <= 11; i++)
        {
            startTime.Items.Add(i + ":00AM");
            startTime.Items.Add(i + ":15AM");
            startTime.Items.Add(i + ":30AM");
        }

        startTime.Items.Add("12:00PM");
        startTime.Items.Add("12:30PM");
        for (int i = 1; i <= 11; i++)
        {
            startTime.Items.Add(i + ":00PM");
            startTime.Items.Add(i + ":15PM");
            startTime.Items.Add(i + ":30PM");
        }
    }


    DropDownList endTime = (DropDownList)(formGroupInput.Row.FindControl("ddlEndTime"));

    if (endTime.Items.Count == 0)
    {
        Same As Above
    }
4

1 に答える 1