2015-04-17 17 views
0

我想在我的DropDownList ddlKlasse的SelectedValue爲true時顯示一個表。我正在使用帶有masterpage的asp.net空web表單。 的理念是:當DropDownList的SelectedValue爲true時顯示錶C#

  1. 當ddlKlasse.SelectedValue = 「2」 表tblDubbelTwee必須顯示
  2. 當ddlKlasse.SelectedValue = 「10」 表tblVierMet必須顯示
  3. 當ddlKlasse.SelectedValue =「9 「必須顯示錶tblAchtMet

我從我的數據庫中獲取我的下拉列表中的值。

我現在的代碼是:

在我的Page_Load:

protected void Page_Load(object sender, EventArgs e) 
    { 
     BindDropDownListKlasse(); 
     BindDropDownListVereniging(); 


     if (!Page.IsPostBack) 
     { 
      tblDubbelTwee.Visible = false; 
      tblVierMet.Visible = false; 
      tblAchtMet.Visible = false; 


     } 
    } 

用於綁定的下拉列表:

private void BindDropDownListKlasse() 
    { 
     try 
     { 
      using (SqlConnection conn = new SqlConnection(connString)) 
      { 
       using (SqlCommand com = new SqlCommand()) 
       { 
        com.CommandText = "SELECT DISTINCT AantalDeelnemers, Naam FROM Klasse;"; 
        com.Connection = conn; 
        conn.Open(); 
        SqlDataAdapter da = new SqlDataAdapter(com); 
        DataTable dt = new DataTable(); 
        da.Fill(dt); 
        ddlKlasse.DataSource = dt; 
        ddlKlasse.DataValueField = "AantalDeelnemers"; 
        ddlKlasse.DataTextField = "Naam"; 
        ddlKlasse.DataBind(); 
        conn.Close(); 

        //Adding "Kies de klasse" optie in dropdownlist voor validatie 
        ddlKlasse.Items.Insert(0, new ListItem("Kies de klasse", "0")); 
       } 
      } 
     } 
     catch 
     { 

     } 
    } 

用於顯示錶:

protected void ddlKlasse_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ListItem selectedListItemDubbelTwee = ddlKlasse.Items.FindByValue("2"); 
     if (selectedListItemDubbelTwee != null) 
     { 
      selectedListItemDubbelTwee.Selected = true; 
      tblDubbelTwee.Visible = true; 
      tblVierMet.Visible = false; 
      tblAchtMet.Visible = false; 
     }; 

     ListItem selectedListItemVierMet = ddlKlasse.Items.FindByValue("5"); 
     if (selectedListItemVierMet != null) 
     { 
      selectedListItemVierMet.Selected = true; 
      tblVierMet.Visible = true; 
      tblDubbelTwee.Visible = false; 
      tblAchtMet.Visible = false; 
     }; 

     ListItem selectedListItemAchtMet = ddlKlasse.Items.FindByValue("9"); 
     if (selectedListItemAchtMet != null) 
     { 
      selectedListItemAchtMet.Selected = true; 
      tblAchtMet.Visible = true; 
      tblDubbelTwee.Visible = false; 
      tblVierMet.Visible = false; 
     }; 
    } 

我的DropDownList:

<div class="form-inline"> 
    <div class="form-group"> 
     <asp:DropDownList ID="ddlKlasse" class="form-control" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlKlasse_SelectedIndexChanged"></asp:DropDownList> 
    </div> 
</div> 

我的一個表:

<asp:Table ID="tblDubbelTwee" runat="server" class="table"> 
    <asp:TableHeaderRow> 
     <asp:TableHeaderCell>Naam</asp:TableHeaderCell> 
     <asp:TableHeaderCell>Email</asp:TableHeaderCell> 
     <asp:TableHeaderCell>Lidmaatschapsnr</asp:TableHeaderCell> 
    </asp:TableHeaderRow> 

    <asp:TableRow> 
     <asp:TableCell> 
      <asp:TextBox ID="txtNaam" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:TextBox ID="txtEmail" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:TextBox ID="txtLidmaatschapsnr" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
    </asp:TableRow> 
    <asp:TableRow> 
     <asp:TableCell> 
      <asp:TextBox ID="txtNaam2" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:TextBox ID="txtEmail2" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
     <asp:TableCell> 
      <asp:TextBox ID="txtLidmaatschapsnr2" type="text" class="form-control" runat="server"></asp:TextBox> 
     </asp:TableCell> 
    </asp:TableRow> 
</asp:Table> 

但是當我跑我的項目,並選擇在我的DropDownList現場它提供了錯誤信息:System.Web.HttpException:選擇在DropDownList中多個項目的不允許。

你能幫我解決這個問題嗎?

+0

嘗試在你的if(!IsPostBack)內移動名爲'BindDropDownListKlasse();'和'BindDropDownListVereniging();'的函數。 –

+1

感謝您與Adrei的解決方案結合使用! :D – Marjolein

回答

1

您當前的DDL索引更改處理程序與您所描述的內容完全不同。它基本上檢查列表項是否存在於ddl列表中(不管是否被選中),然後嘗試選擇它。由於存在3個項目,所以有效地嘗試選擇3個項目,這是不允許的。

什麼,你可能會尋找的是通過選定值開關:

switch (ddlKlasse.SelectValue) 
{ 
    case "2": 
      tblDubbelTwee.Visible = true; 
      tblVierMet.Visible = false; 
      tblAchtMet.Visible = false; 
      break; 
    case "5": //similar here 
    case "9": //similar here 
    default: 
    // exception or something 
} 
+0

謝謝你的作品! :d – Marjolein

0
refere this code 
protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       bindgrid(); 

      } 
     } 

     void bindgrid() 
     { 
      con.Open(); 
      SqlCommand cmd = new SqlCommand("select DISTINCT Class from addmitionform1", con); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      con.Close(); 
      ddlclass.DataSource = ds; 
      ddlclass.DataTextField = "Class"; 
      ddlclass.DataValueField = "Class"; 
      ddlclass.DataBind(); 
      ddlclass.Items.Insert(0, new ListItem("--Select--", "0")); 

     } 

protected void ddlKlasse_SelectedIndexChanged(object sender, EventArgs e) 
    { 
      string id = (ddlclass.SelectedValue.ToString()); 
      con.Close(); 
      SqlDataAdapter da1 = new SqlDataAdapter("Select id,FirstName from addmitionform1 where Class= '" + id + "'", con); 
      //SqlDataAdapter da1 = new SqlDataAdapter("Select * from addmitionform1 ", con); 
      DataSet ds1 = new DataSet(); 
      da1.Fill(ds1); 
      GridView1.DataSource = ds1; 
      GridView1.DataBind(); 
    } 
+0

謝謝我沒有錯誤了。當我現在在下拉列表中選擇一個值時,它會顯示錶格(正如我所希望的那樣),但下拉列表中的其他值不再顯示,只有選定的值顯示在下拉列表中。你知道如何在顯示下拉列表中的表格後再次顯示所有的值嗎? – Marjolein

+0

你可以設置Ispostback屬性爲dropdownlist控件真 –

0

第一招BindDropDownListKlasse()BindDropDownListVereniging()if (!IsPostBack),作爲HarveySpecter建議。
並更改ddlKlasse_SelectedIndexChanged()到:

protected void ddlKlasse_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    bool showDubbelTwee = false, showVierMet = false, showAchtMet = false; 
    switch (ddlKlasse.SelectedValue) 
    { 
     case "2": 
      showDubbelTwee = true; 
      break; 
     case "5": 
      showVierMet = true; 
      break; 
     case "9": 
      showAchtMet = true; 
      break; 
    } 

    tblAchtMet.Visible = showVierMet; 
    tblDubbelTwee.Visible = showDubbelTwee; 
    tblVierMet.Visible = showVierMet; 
} 

什麼你在ddlKlasse_SelectedIndexChanged()現在做的是檢查每個值,如果它出現在下拉列表中,並且如果存在選擇它,並顯示相應的表格。
相反,您需要檢查選擇哪個值並顯示相應的表格。

相關問題