2017-03-07 2 views
0

나는 아래의 MySql 데이터베이스에서 오는 ASP 드롭 다운 목록에서 값을 선택해야하는 프로젝트에서 작업 중입니다. 드롭 다운 목록의 출처는 Mysql table입니다.ASP.NET에서 Dropdownlist에서 올바른 값을 가져올 수 없다 C#

여기 내 UI 모양은 Selecting Value which came from Database입니다. 여기

<%@ Page Title="" Language="C#" MasterPageFile="~/MASTER_USER.master" AutoEventWireup="true" CodeFile="Ask_user.aspx.cs" Inherits="Ask_user" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
<div class="content-wrapper"> 
<div class="container"> 

<form class="form-horizontal" > 
<fieldset> 

<!-- Form Name --> 
<h1 align=center>ASK YOUR QUESTION!</h1> 



<!-- Multiple Radios --> 
<div class="form-group space"> 
    <label style="text-align:right;" class="col-md-4 control-label">Category</label> 
    <div class="col-md-4"> 
     <asp:DropDownList ID="DropDownList1" runat="server" CssClass="form-control" AutoPostBack="true"> 
     <asp:ListItem Value="0">Topics</asp:ListItem> 
     </asp:DropDownList> 
    </div><br /> 

</div> 

<label style="text-align:right;" class="col-md-4 control-label">Sub Category</label> 
    <div class="col-md-4"> 
     <asp:DropDownList ID="DropDownList2" runat="server" CssClass="form-control"> 
      <asp:ListItem Value="0">Sub topics</asp:ListItem> 
     </asp:DropDownList> 
    </div><br /> 

</div> 
<!-- Text input--> 

<div class="form-group space"> 
    <label style="text-align:right;" class="col-md-4 control-label" for="Title ">Title</label> 
    <div class="col-md-4"> 
    <input id="title" name="title" runat="server" placeholder="What is your question?" class="form-control input-md" type="text"> 

    </div><br /> 
</div> 

<!-- Textarea --> 
<div class="form-group space"> 
    <label style="text-align:right;" class="col-md-4 control-label" for="Disc">Description</label> 
    <div class="col-md-4">      
    <textarea class="form-control" id="Disc" runat="server" name="Disc" placeholder="A brief description about your question..."></textarea> 
    <br /> 


    <asp:Button ID="btn_ask" CssClass="btn btn-primary" runat="server" Text="ASK!" 
        OnClick="btn_insert_Click" /> 
        <span id="msg" ></span> 
    </div> 
</div> 



</fieldset> 
</form> 
</div> 
</div> 
</asp:Content> 

내 CS 파일입니다 : 여기

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Configuration; 
using System.Data.SqlClient; 
using MySql.Data.MySqlClient; 
using System.Data; 
using System.Collections; 
using System.Web.UI.HtmlControls; 
using System.Web.SessionState; 

public partial class Ask_user : System.Web.UI.Page 
{ 
    dbconnection con = new dbconnection("connect_to_mysql"); 
    string constr = ConfigurationManager.ConnectionStrings["connect_to_mysql"].ConnectionString; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!IsPostBack) 
     { 
      string qry = "select cat_nm, cat_id from category"; 
      DataTable dt = dbconnection.ExecuteSelect(qry); 
      DropDownList1.DataSource = dt; 
      DropDownList1.DataTextField = "cat_nm"; 
      DropDownList1.DataValueField = "cat_id"; 
      DropDownList1.DataBind(); 
     } 
     else 
     { 


      string catval = DropDownList1.SelectedValue; 
      string qry = "select * from category_sub where parent_id = " + catval; 
      DataTable dt = dbconnection.ExecuteSelect(qry); 
      DropDownList2.DataSource = dt; 
      DropDownList2.DataTextField = "cat_nm"; 
      DropDownList2.DataValueField = "cat_sub"; 
      DropDownList2.DataBind();  


     } 
    } 
    protected void btn_insert_Click(object sender, EventArgs e) 
    { 


     string cat2 = DropDownList2.SelectedValue; 

     int sb = (Convert.ToInt32(Convert.ToInt32(cat2))); 
     string cat = DropDownList1.SelectedItem.Text; 
     string title1 = title.Value.ToString(); 
     string disc = Disc.Value.ToString(); 

     string uid = (Session["uid"].ToString()); 

     string query = @"insert into question(cat_sub,catg,question,q_dis,user_id)values('" + sb + "','" + cat + "','" + title1.Replace("'", "''") + "','" + disc.Replace("'", "''") + "','" + uid + "')"; 

     dbconnection.ExecuteInsert(query); 

     string info = "Success"; 
     ClientScript.RegisterStartupScript(typeof(Page), "alert", "$('#msg').addClass('alert alert-success');$('#msg').text('" + info + "');",true); 


    } 
} 

cat_sub의 값은 항상 12 오라클 상기와 동일보다는 11오고 내 문제가 여기에

내 ASPX 파일입니다/mysql 값은 8이 아니라 각각 cat_sub입니다.

디버깅 값이 오는 것은 처음부터 값이 나오는 것입니다. 여기에 몇 가지 정보가 있습니다 : https://i.stack.imgur.com/3lcq2.png.

+2

.. 처리합니다. – lenny

+0

의도 한 작업은 무엇입니까? 하위 카테고리 드롭 다운 목록에서 "전환"을 선택하는 경우에도 –

+0

cat_sub 값이 "12"로 표시되는 대신 12 개의 항목 만 계산합니다. –

답변

0

버튼 코드 이벤트 이전에 버튼을 클릭하여 선택한 하위 카테고리를 새로 고침 할 때도 하위 카테 고 리 바인딩 코드가 실행 중입니다.

Page_Load에서 제거하십시오.

는 DropDownList1

OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" 

에의 SelectedIndexChanged 이벤트를 추가하고 페이스트 빈에 게시 대신 귀하의 질문에 직접 코드를 추가 할 수 있습니다

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string catval = DropDownList1.SelectedValue; 
     string qry = "select * from category_sub where parent_id = " + catval; 
     DataTable dt = dbconnection.ExecuteSelect(qry); 
     DropDownList2.DataSource = dt; 
     DropDownList2.DataTextField = "cat_nm"; 
     DropDownList2.DataValueField = "cat_sub"; 
     DropDownList2.DataBind(); 
    } 
+0

여전히 가치가 없습니다. 12 ... 첫 번째가 표시됩니다. –