2017-08-24 28 views
0

私は別の機能で設定されているドロップダウンリストがあります。最初にページが読み込まれると、SQLデータベースから値が取得され、その値がドロップダウンリストに挿入されるメソッドに渡されます。 populateメソッドは、受信したパラメータに基づいてアイテムをドロップダウンに挿入します。Asp.netドロップダウンリストの問題

また、私は次のよう

if (!IsPostBack) 
{ 
    // CALL THE POPULATE FUNCTION 
} 

のようなページロードイベントにコードのブロックを持っている以上のブロックが唯一のドロップダウンにページがロードされる最初の時間を移入します。私はそれがボタンからのポストバックに再繁殖しないようにしたいです

IDを入れて検索をクリックする必要があります。検索をクリックすると、ドロップダウンでアイテムは保持されますが、最初のアイテムが選択されます。私が検索をクリックする前に、ドロップダウンの選択を変更し、検索をクリックしてそのままにしておきたいが、常に最初の項目に戻る。背後

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <asp:DropDownList ID="DropDownList1" runat="server"> 
     </asp:DropDownList> 
     <br /> 
     <br /> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <asp:Button ID="Button1" runat="server" Text="Search" /> 
    </div> 
    </form> 
</body> 
</html> 

コード:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     DropDownList1.Items.Clear(); 
     string test = "17/FO"; 
     Populate(test); 
    } 
} 

protected void Populate(string t) 
{ 
    string t1, t2, t3, t4, t5, t6, t7, t8, t9, t10,t11,t12; 
    if (t.Contains("/FI")) 
    { 
     t1 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FI"; 
     t2 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/SE"; 
     t3 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/TH"; 
     t4 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FO"; 
     t5 = t.Substring(0, 2) + "/FI"; 
     t6 = t.Substring(0, 2) + "/SE"; 
     t7 = t.Substring(0, 2) + "/TH"; 
     t8 = t.Substring(0, 2) + "/FO"; 
     t9 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FI"; 
     t10 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/SE"; 
     t11 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/TH"; 
     t12 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FO"; 
     DropDownList1.Items.Insert(0, new ListItem(t1, "")); 
     DropDownList1.Items.Insert(1, new ListItem(t2, "")); 
     DropDownList1.Items.Insert(2, new ListItem(t3, "")); 
     DropDownList1.Items.Insert(3, new ListItem(t4, "")); 
     DropDownList1.Items.Insert(4, new ListItem(t5, "")); 
     DropDownList1.Items.Insert(5, new ListItem(t6, "")); 
     DropDownList1.Items.Insert(6, new ListItem(t7, "")); 
     DropDownList1.Items.Insert(7, new ListItem(t8, "")); 
     DropDownList1.Items.Insert(8, new ListItem(t9, "")); 
     DropDownList1.Items.Insert(9, new ListItem(t10, "")); 
     DropDownList1.Items.Insert(10, new ListItem(t11, "")); 
     DropDownList1.Items.Insert(11, new ListItem(t12, "")); 
     DropDownList1.SelectedIndex = 4; 
    } 
    else if (t.Contains("/SE")) 
    { 
     t1 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FI"; 
     t2 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/SE"; 
     t3 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/TH"; 
     t4 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FO"; 
     t5 = t.Substring(0, 2) + "/FI"; 
     t6 = t.Substring(0, 2) + "/SE"; 
     t7 = t.Substring(0, 2) + "/TH"; 
     t8 = t.Substring(0, 2) + "/FO"; 
     t9 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FI"; 
     t10 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/SE"; 
     t11 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/TH"; 
     t12 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FO"; 
     DropDownList1.Items.Insert(0, new ListItem(t1, "")); 
     DropDownList1.Items.Insert(1, new ListItem(t2, "")); 
     DropDownList1.Items.Insert(2, new ListItem(t3, "")); 
     DropDownList1.Items.Insert(3, new ListItem(t4, "")); 
     DropDownList1.Items.Insert(4, new ListItem(t5, "")); 
     DropDownList1.Items.Insert(5, new ListItem(t6, "")); 
     DropDownList1.Items.Insert(6, new ListItem(t7, "")); 
     DropDownList1.Items.Insert(7, new ListItem(t8, "")); 
     DropDownList1.Items.Insert(8, new ListItem(t9, "")); 
     DropDownList1.Items.Insert(9, new ListItem(t10, "")); 
     DropDownList1.Items.Insert(10, new ListItem(t11, "")); 
     DropDownList1.Items.Insert(11, new ListItem(t12, "")); 
     DropDownList1.SelectedIndex = 5; 
    } 
    else if (t.Contains("/TH")) 
    { 
     t1 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FI"; 
     t2 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/SE"; 
     t3 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/TH"; 
     t4 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FO"; 
     t5 = t.Substring(0, 2) + "/FI"; 
     t6 = t.Substring(0, 2) + "/SE"; 
     t7 = t.Substring(0, 2) + "/TH"; 
     t8 = t.Substring(0, 2) + "/FO"; 
     t9 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FI"; 
     t10 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/SE"; 
     t11 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/TH"; 
     t12 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FO"; 
     DropDownList1.Items.Insert(0, new ListItem(t1, "")); 
     DropDownList1.Items.Insert(1, new ListItem(t2, "")); 
     DropDownList1.Items.Insert(2, new ListItem(t3, "")); 
     DropDownList1.Items.Insert(3, new ListItem(t4, "")); 
     DropDownList1.Items.Insert(4, new ListItem(t5, "")); 
     DropDownList1.Items.Insert(5, new ListItem(t6, "")); 
     DropDownList1.Items.Insert(6, new ListItem(t7, "")); 
     DropDownList1.Items.Insert(7, new ListItem(t8, "")); 
     DropDownList1.Items.Insert(8, new ListItem(t9, "")); 
     DropDownList1.Items.Insert(9, new ListItem(t10, "")); 
     DropDownList1.Items.Insert(10, new ListItem(t11, "")); 
     DropDownList1.Items.Insert(11, new ListItem(t12, "")); 
     DropDownList1.SelectedIndex = 6; 
    } 
    else if (t.Contains("/FO")) 
    { 
     t1 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FI"; 
     t2 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/SE"; 
     t3 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/TH"; 
     t4 = (int.Parse(t.Substring(0, 2)) - 1).ToString() + "/FO"; 
     t5 = t.Substring(0, 2) + "/FI"; 
     t6 = t.Substring(0, 2) + "/SE"; 
     t7 = t.Substring(0, 2) + "/TH"; 
     t8 = t.Substring(0, 2) + "/FO"; 
     t9 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FI"; 
     t10 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/SE"; 
     t11 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/TH"; 
     t12 = (int.Parse(t.Substring(0, 2)) + 1).ToString() + "/FO"; 
     DropDownList1.Items.Insert(0, new ListItem(t1, "")); 
     DropDownList1.Items.Insert(1, new ListItem(t2, "")); 
     DropDownList1.Items.Insert(2, new ListItem(t3, "")); 
     DropDownList1.Items.Insert(3, new ListItem(t4, "")); 
     DropDownList1.Items.Insert(4, new ListItem(t5, "")); 
     DropDownList1.Items.Insert(5, new ListItem(t6, "")); 
     DropDownList1.Items.Insert(6, new ListItem(t7, "")); 
     DropDownList1.Items.Insert(7, new ListItem(t8, "")); 
     DropDownList1.Items.Insert(8, new ListItem(t9, "")); 
     DropDownList1.Items.Insert(9, new ListItem(t10, "")); 
     DropDownList1.Items.Insert(10, new ListItem(t11, "")); 
     DropDownList1.Items.Insert(11, new ListItem(t12, "")); 
     DropDownList1.SelectedIndex = 7; 
    } 
} 

任意の提案

は基本的に私が持っていることは、次のでしょうか?

DropDownList1.Items.Insert(0, new ListItem(t1, "")); 

DropDownListコントロールが設定された有効な値(ブラウザに一覧に表示されていないテキストだけを)持っています
はあなたがListItemコンストラクタに""string.Empty)を通過している

答えて

0

ありがとうございます。これはDataValueFieldプロパティによって行われます。それぞれの値は一意でなければなりません。そうでなければ、最初の(重複した)ものだけが選択される状況になります。

は、ブラウザでHTMLソースを確認し、あなたが持っている必要があります。

<select> 
    <option value="some_unique_value1">text1</option> 
    <option value="some_unique_value2">text2</option> 
</select> 

彼らは、サーバー上で右の項目を選択するために使用されるようなあなたは、これらのユニークな値を必要としています。

コンストラクタを変更して独自の値を渡してみましたか? ""Guid.NewGuid()などに変更してテストしてください。

関連する問題