2017-08-10 8 views
-2

ASP.NETアプリケーションで作業していて、DropDownListがSqlDataReaderを使用してデータベースからデータを表示していません。以下は私のasp.netのWebフォームのコード...以下DropDownListとOnSelectedIndexChangedがSqlDataReaderを使用してデータを表示しない

<p> 
<span class="label"> 
<asp:Label ID="Label1" runat="server" Text="Document Number" Font-Size="Small" Font-Bold="True"></asp:Label> 
</span> 
<asp:TextBox ID="numb" runat="server" Width="176px" ReadOnly="true"></asp:TextBox> 
<br /> 
<br /> 
<span class="label"> 
<asp:Label ID="Label2" runat="server" Text="Title" Font-Size="Small" Font-Bold="True"></asp:Label> 
</span> 
<asp:TextBox ID="TextBox1" runat="server" Width="176px"></asp:TextBox><br/> 
<br /> 
<span class="label"> 
<asp:Label ID="Label3" runat="server" Text="Author" Font-Size="Small" Font-Bold="True"></asp:Label> 
</span> 
<asp:TextBox ID="TextBox2" runat="server" Width="176px"></asp:TextBox><br/> 
<br /> 
<span class="label"> 
<asp:Label ID="Label4" runat="server" Text="Account Name" Font-Size="Small" Font-Bold="true"></asp:Label> 
</span> 
<asp:DropDownList ID="name" runat="server" AutoPostBack="true" OnSelectedIndexChanged="OnSelectedIndexChanged" AppendDataBoundItems="true"> 
<asp:ListItem Text="-SELECT-" Value="" /> 
</asp:DropDownList><br /> 
<br /> 
<span class="label"> 
<asp:Label ID="Label5" runat="server" Text="Account Code" Font-Size="Small" Font-Bold="true"></asp:Label> 
</span> 
<asp:DropDownList ID="code" runat="server" AutoPostBack="true"></asp:DropDownList><br /> 
<br /> 

<span class="label"> 
<asp:Label ID="Label6" runat="server" Text="Date" Font-Size="Small" Font-Bold="true"></asp:Label> 
</span> 
<asp:TextBox ID="date" runat="server" Width="176px" ReadOnly="true"></asp:TextBox><br /> 
<br /> 
<asp:Label ID="results" runat="server"></asp:Label> 
</p> 

そして、私のC#のコード私はコードテキストボックスを除くすべての私のテキストボックスは、データベースからのデータが移入されているページを実行してどのような

if (!IsPostBack) 
      { 
       string CS = ConfigurationManager.ConnectionStrings["conn"].ConnectionString; 
       using (SqlConnection conn = new SqlConnection(CS)) 
       { 
        SqlCommand comm = new SqlCommand("SELECT Account_Name FROM Accounts", conn); 
        conn.Open(); 

        name.DataSource = comm.ExecuteReader(); 
        name.DataTextField = "Account_Name"; 
        name.DataValueField = "Account_Name"; 
        name.DataBind(); 
        OnSelectedIndexChanged(sender, e); 
       } 

       date.Text = DateTime.Now.ToString("MM/dd/yyyy"); 
       LoadDetails(); 
      } 
     } 

     protected void OnSelectedIndexChanged(object sender, EventArgs e) 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString); 
      string account = "SELECT Account_Code FROM Accounts WHERE Account_Name = '" + name.Text + "'"; 
      SqlCommand camd = new SqlCommand(account, con); 
      con.Open(); 

      code.DataSource = camd.ExecuteReader(); 
      code.DataTextField = "Account_Code"; 
      code.DataValueField = "Account_Code"; 
      code.DataBind(); 
      con.Close(); 
     } 

     private void LoadDetails() 
     { 
      using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString)) 
      { 
       string docNo = Session["doc"].ToString(); 
       string query = "SELECT * FROM [pubs].[dbo].[ReportDocumentNo] WHERE DocumentNo = @docNo;"; 
       SqlCommand cmd = new SqlCommand(query, con); 
       cmd.Parameters.AddWithValue("@docNo", docNo); 
       con.Open(); 
       using (SqlDataReader rdr = cmd.ExecuteReader()) 
       { 
        while (rdr.Read()) 
        { 
         numb.Text = rdr["DocumentNo"].ToString(); 
         TextBox1.Text = rdr["Title"].ToString(); 
         TextBox2.Text = rdr["Author"].ToString(); 
         name.Text = rdr["AccName"].ToString(); 
         code.Text = rdr["AccCode"].ToString(); 
        } 
       } 

      } 

     } 

されていますコードテキストボックスにデータを表示させるには何が欠けていますか? aspxページで

+0

まず、 'code'" textbox "を持っていないようです'code'"ドロップダウンリスト "を表示します。何かエラーがありますか? 'code'ドロップダウンリストにデータが入っていますか?私はそれが1行または0行のデータを持つと期待します。 – tgolisch

+0

** **これは私のコードドロップダウンリストで、** code.Text = rdr ["AccCode"]。ToString(); **しかし、データベースから読み取っているデータは表示されません – Inno

答えて

0

は、このコードに

<asp:DropDownList ID="ddlMealLocationQT" runat="server" OnSelectedIndexChanged="ddlMealLocationQT_SelectedIndexChanged"></asp:DropDownList> 
Aspx.csページで

protected void ddlMealLocationQT_SelectedIndexChanged(object sender, EventArgs e){ 
    List<int> months = new List<int>(){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; 
    foreach (string month in months) 
    { 
     DropDownListMonth.Items.Add(month); 
    } 
} 

OR

を追加するには、DataTextFieldとDataValueFieldプロパティを使用することができ、ありがとうございました。

ListControl.DataTextField Property 

    DropDownList1.DataSource = drpdt; 
    DropDownList1.DataTextField="StringValue"; 
    DropDownList1.DataValueField="CurrencyValue"; 
    DropDownList1.DataBind(); 

または、ListItemを1つずつ追加します。

https://www.google.com/search?ie=UTF-8&ufsmps=1&oe=UTF-8&sourceid=navclient&gfns=1&q=ASP%20Tutorials

1

その常に良いが切断アーキテクチャを使用するが、ここであなたの答えを修正

である私が目的

ASPX PAGE 


<asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl1_SelectedIndexChanged"></asp:DropDownList> 
      <asp:DropDownList runat="server" ID="ddl2"></asp:DropDownList> 

.CS PAGE

MySqlConnection con = new MySqlConnection(WebConfigurationManager.ConnectionStrings["con3"].ConnectionString); 
    protected void Page_Load(object sender, EventArgs e) 
    { 

     string s = "select distinct IMEI_NO FROM permission"; 
     MySqlDataAdapter ad = new MySqlDataAdapter(s, con); 
     DataTable dt = new DataTable(); 
     ad.Fill(dt); 
     ddl1.DataSource = dt; 
     ddl1.DataTextField = "IMEI_NO"; 
     ddl1.DataValueField = "IMEI_NO"; 
     ddl1.DataBind(); 
     } 



protected void ddl1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     con.Open(); 
     string s = "select distinct CA_NO FROM permission WHERE IMEI_NO='"+ddl1.SelectedItem+"'"; 
     MySqlCommand cmd = new MySqlCommand(s, con); 
     MySqlDataReader dr = cmd.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Load(dr); 
     ddl2.DataSource = dt; 
     ddl2.DataTextField = "CA_NO"; 
     ddl2.DataValueField = "CA_NO"; 
     ddl2.DataBind(); 
    } 
を格納するために使用するデータテーブルを持っています
+0

これは.. !!! – Inno

+0

まだコードに問題がありますか? @Inno –

関連する問題