【问题标题】:add values from listbox to database将列表框中的值添加到数据库
【发布时间】:2013-11-16 18:01:21
【问题描述】:

我有一个问题,列表框的值没有添加到数据库中。

我有一个复选框列表和列表框,首先我想在列表框中添加所有选中的复选框值,它可以成功运行,然后我想在按钮单击事件时将列表框的数据从复选框列表添加到数据库,它不起作用那么如何解决呢。

<div id="contentwrapper" class="contentwrapper">

            <div id="validation" class="subcontent">

                    <form class="stdform stdform2" style="border-top:solid 1px #ddd">

                        <p>
                            <label>Hotel Name</label>
                            <span class="field">
                                <asp:DropDownList ID="ddlHotel" runat="server">
                                </asp:DropDownList>
                            </span>
                        </p>

                        <p>
                            <fieldset class="fieldset">
                            <legend class="legend">Facilities</legend>
                                <div>
                                    <asp:CheckBoxList ID="cblFacility" runat="server" DataTextField="FacilityName" DataValueField="FacilityID" TextAlign="Right" RepeatColumns="5">
                                    </asp:CheckBoxList>

                                    <div class="clear">
                                    </div>
                                </div>

                            </fieldset>
                        </p>
                        <p  class="stdformbutton">
                            <asp:Button ID="btnAdd" runat="server" CssClass="radius2" Text="Add" onclick="btnAdd_Click" />
                        </p>                            
                    </form>                        
            </div><!--subcontent-->

        </div><!--contentwrapper-->            
        <div id="Div1" class="contentwrapper">              
            <div id="Div2" class="subcontent">
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <ContentTemplate>
                    <form class="stdform stdform" style="border-top:solid 1px #ddd">
                        <p>                             
                            <span class="field">
                                <asp:ListBox ID="lstFacility" runat="server" SelectionMode="Multiple"></asp:ListBox><br />
                            </span>
                        </p>                            
                        <p  class="stdformbutton">
                            <asp:Button ID="btnSubmit" runat="server" CssClass="submit radius2" Text="Submit" onclick="btnSubmit_Click" />
                        </p>
                    </form>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
                    </Triggers>
                </asp:UpdatePanel>
            </div><!--subcontent-->            
        </div>

AND .cs 文件是:

protected void Page_Load(object sender, EventArgs e)
    {
        string myConnectionString = "my connection string";

        if (Session["admin"] != null)
        {
            lblEmail.Text = Session["adminEmail"].ToString();
            lblAdmin.Text = "Wel Come " + Session["admin"].ToString();
            lblAdmin1.Text = "Wel Come " + Session["admin"].ToString();
        }
        else
        {
            Response.Redirect("Login.aspx");
        }

        if (!Page.IsPostBack)
        {
            if (Session["hotelID"] != null)
            {
                ddlHotel.SelectedValue = Session["hotelID"].ToString();
            }
            ddlHotel.DataSource = dalMST_Hotel.SelectAll(myConnectionString);
            ddlHotel.DataTextField = "HotelName";
            ddlHotel.DataValueField = "HotelID";
            ddlHotel.DataBind();
            ddlHotel.Items.Insert(0, "Select Hotel");

            BindData();
        }
    }


    private void BindData()
    {
        string myConnectionString = "my connection string";    
        cblFacility.DataSource = dalMST_Facility.SelectAll(myConnectionString);
        cblFacility.DataBind();
    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        string s1 = string.Empty;
        lstFacility.Items.Clear();
        foreach (ListItem item in this.cblFacility.Items)
        {
            if (item.Selected)
            {
                lstFacility.Items.Add(item);
            }
        }
    }

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        string myConnectionString = "my connection string";

        Page.Validate();
        if (Page.IsValid)
        {
            DataTable dt = dalMST_FacilityTran.SelectAll(myConnectionString);
            int cnt = dt.Rows.Count;
            entMST_FacilityTran.HotelID = Convert.ToInt32(ddlHotel.SelectedValue);
            entMST_FacilityTran.FacilityID = 0;

            entMST_FacilityTran.Created = DateTime.Now;
            entMST_FacilityTran.Modified = DateTime.Now;

            #region Insert,Update

            for (int i = 0; i < lstFacility.Items.Count; i++)
            {
                int flag = 0;
                for (int j = 0; j < cnt; j++)
                {
                    int hotelid = Convert.ToInt32(dt.Rows[j][2].ToString());
                    int facilityid = Convert.ToInt32(dt.Rows[j][1].ToString());


                    if (lstFacility.Items[i].Selected)
                    {
                        entMST_FacilityTran.FacilityID = Convert.ToInt32(lstFacility.Items[i].Value);

                        if (entMST_FacilityTran.HotelID == hotelid && entMST_FacilityTran.FacilityID == facilityid)
                        {
                            flag = 1;
                            break;
                        }
                        else
                        {
                            flag = 0;
                        }
                    }
                }
                if (flag == 0)
                {
                    if (dalMST_FacilityTran.Insert(entMST_FacilityTran, myConnectionString))
                    {
                        //txtFacility.Text = "";
                        //Response.Redirect("AddFacility.aspx");

                        //return;
                    }
                }
            }
            Response.Redirect("AddRoomCategory.aspx");


            #endregion
        }
    }

【问题讨论】:

  • 嗨你有什么错误吗?
  • 不,没有任何错误,但记录没有插入数据库
  • 请在提交按钮上使用 try 和 catch 块。因此,如果有任何错误,您可能会得到错误。你的代码看起来不错。
  • 感谢 hitesh,在此代码中的总线未触发单击事件。光标不会转到按钮单击事件。
  • 好的,这是不将数据插入数据库的问题

标签: c# asp.net .net checkbox listbox


【解决方案1】:

更新面板有问题。

使用下面的代码:

 <Triggers>
      <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
      <asp:PostBackTrigger ControlID="btnSubmit" /> 
 </Triggers>

所以提交按钮 cilck 事件将触发。

谢谢

【讨论】:

    【解决方案2】:

    首先您必须删除嵌套的 For 循环

     String lstName;
    
     for (int i= 0; i< listBoxEmployeeName.Items.Count;i++)
        {
    
        lstName=listBoxEmployeeName.Items[i].Text;//Here your value stored in lstName
        //here continue you insert query  
    
        }
    

    【讨论】:

    • 我使用嵌套 for 循环,因为我不想添加已经在数据库中的记录。
    • 你在页面上使用过任何验证吗?
    猜你喜欢
    • 2015-02-12
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多