簡體   English   中英

使用C#的Asp.net Formview

[英]Asp.net Formview using C#

我有一個綁定到objectdatasource的formview。 哪個objectdatasource從列表集合中獲取其值。 為了實現級聯下拉列表,我不得不切換到下拉列表的文本框控件很少。 值填充良好,級聯的dropdownlist很好用,但是在插入時,我得到了這個令人討厭的無用信息

“指數數組的邊界之外。” 因此,我一直在努力弄清這一點並不能。

假設這是我的下拉列表導致的問題,因為我手動綁定它們,所以我嘗試將此代碼添加到后面的代碼中,因此它們沒有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
    }

以后只供此問題的訪客使用。 如果您綁定了一個Int32參數,但尚未在Formview中設置該參數,則控件的值為空字符串,則會發生這種情況。 空字符串會導致Int32解析錯誤。 在您的ObjectDataSource控件中,您需要這樣的內容:

<InsertParameters>
<asp:Parameter Name="MyParameterName" Type="Int32" ConvertEmptyStringToNull="true" />
</InsertParameters>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM