繁体   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