2011-07-03 14 views
1

私はドロップダウンリストを動的にバインドするコードビハインド関数を使用しています。ユーザーがドロップダウンリストを変更して購入を送信すると、選択された値は常に空です。asp.net - 問題がドロップダウンリストを取得しています

私は両方ddl.SelectedItem.ToString()を試しました。およびddl.SelectedValue.ToString();いずれも機能しません。また、以下の2つのコードの背後にある関数については、戻り値とパラメータを必要とする関数の代わりにvoidメソッドを使用することはできません。アドバイスをいただければ幸いです。

ありがとうございました。

<%# FormattedSize((string)Eval("Size")) %> 
<%# FormattedGetSize((string)Eval("Size")) %> 

インライン:

<asp:DropDownList ID="DropDownList1" runat="server" OnDataBinding='<%# FormattedSize((string)Eval("Size")) %>'></asp:DropDownList> 

<a href='AddToCart.aspx?CategoryId=<%# Eval("CategoryId") %>&&ProductId=<%# Eval("ProductId") %>&&Size=<%# FormattedGetSize((string)Eval("Size")) %>' style="border: 0 none white;"> 

コードの後ろ:

protected string FormattedSize(string size) 
    { 
     if (size.Contains("s")) 
     { 
      DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
      ddl.Items.Add("S"); 
     } 

    if (size.Contains("m")) 
    { 
     DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
     ddl.Items.Add("M"); 
    } 

    if (size.Contains("f")) 
    { 
     DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
     ddl.Items.Add("Freesize"); 
    } 
    return null; 
} 

protected string FormattedGetSize(String Size) 
{ 
    DropDownList ddl = (DropDownList)FormView_Product.Row.Cells[0].FindControl("DropDownList1"); 
    string selectedSize = ddl.SelectedItem.ToString(); 
    return selectedSize; 
} 

答えて

1

"あなたはそれが間違ってやっている" ..ので、それが動作しない理由があります。 <a href=..はユーザーの操作に基づいて変更されると予想されますが、ユーザーがページを受け取ったときに既に生成されています。あなたは、リンクがドロップダウンに基づいて変更したい場合、あなたはどちらか持っている必要があるだろう:

  1. ポストバックをドロップダウンの選択には、リンクが変わってしまう...
  2. あなたはいくつかとhrefを変更することができますjavascriptをドロップダウンメニューで選択してください。
+0

こんにちは、私はddlのAutoPostBackをtrueに設定しましたが、動作しませんでした。何かアドバイス? – k80sg

+0

はい。ドロップダウンリストにデータを割り当てる場合は、 'if(!IsPostBack)'だけを実行します。そうしないと、ビューステートにあるものはすべて上書きされます。 – ub1k

0

Page_Loadメソッドで何をしていますか?現在のリクエストがポストバックであるかどうか(IsPostBackを使用して)チェックしますか? もしそうなら、IsPostBackをチェックし、DropDownListをGet要求でのみ基になるデータソースにバインドします。