0

私のaspxページにはフォロードロップダウンリストがあります:

 <asp:DropDownList ID="OrderPeriodStatus" runat="server" AutoPostBack="true"
    CssClass="ddlb" Width="100px" Height="30px" DataSourceID="SqlDataSource5" 
    DataTextField="OrderPeriod" DataValueField="OrderPeriodID" onselectedindexchanged="OrderPeriodStatus_SelectedIndexChanged">
     </asp:DropDownList>

<asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:ProdDB %> # blah blah query
    </asp:SqlDataSource>

次のコードを使用して、C#で選択した値の値にアクセスしようとしました。

protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            ProcessEligibleScenarios();
            LoadOptions();
            ddlbPeriod.DataBind();
            GridView1.DataBind();
            gvActiveLogs.DataBind();
        }
    }

protected void OrderPeriodStatus_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (OrderPeriodStatus.SelectedValue != null)
        {
            SqlConnection myConn = default(SqlConnection);
            SqlCommand myComm = default(SqlCommand);
            myConn = new SqlConnection(ConfigurationManager.ConnectionStrings["ProdDB"].ConnectionString);
            myConn.Open();
            myComm = new SqlCommand("SELECT OrderPeriodDate, OrderPeriodStatus, Notes FROM OrderPeriod WHERE OrderPeriod ='" + OrderPeriodStatus.SelectedValue + "'");
            try
            {
                myComm.Connection = myConn;
                SqlDataReader Dr = myComm.ExecuteReader();
                while (Dr.Read())
                {
                    System.Diagnostics.Debug.Write("While reading the data");
                    TextBox1.Text = Dr["OrderPeriodDate"].ToString();
                    TextBox2.Text = Dr["OrderPeriodStatus"].ToString();
                    NotesArea.Value = (string)Dr["Notes"];
                    System.Diagnostics.Debug.WriteLine(OrderPeriodStatus.SelectedValue);
                }
                Dr.Close();
                myConn.Close();
            }
            catch (SqlException sqx)
            {
            }
            GridView1.DataBind();
        }
        else {  }
    }

しかし、私が印刷するときvalue。値ではなく、選択したインデックスが表示されます。なんで?

4

3 に答える 3

1

sqdatasourceで不一致エラーが発生しました。次のように置き換えてくださいSqlDataSource4

DataSourceID="SqlDataSource5"  <---

<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:ProdDB %> # blah blah query
 </asp:SqlDataSource>
于 2012-08-31T13:56:35.733 に答える
0

ドロップダウンリストのAutoPostbackプロパティをtrueに設定し、ViewStateModeを継承するように設定すると、選択した値を取得する必要があります。私は自分の側でそれを試しました、そしてそれはうまくいきました。すでにSqlDataSourceがあり、ドロップダウンリストのDataSourceIdがSqlDataSourceに設定されているため、自動的に入力されます。

- -編集

申し訳ありませんが、あなたの質問を読み間違えた可能性があります。代わりに使用する場合

DropDownListnew.SelectedItem.Text

必要なテキスト値を取得する必要があります。

-別の編集:

@Amit、ドロップダウンリストコードで設定したので、SelectedValueからインデックスを取得します

DataValueField="OrderPeriodID"

これは基本的に主キーまたはインデックスです。インデックスの代わりにテキスト値を取得するには、次を使用する必要があります

SelectedItem.Text

また、クエリで:

myComm = new SqlCommand("SELECT OrderPeriodDate, OrderPeriodStatus, Notes FROM OrderPeriod WHERE OrderPeriod ='" + OrderPeriodStatus.SelectedValue + "'");

私はあなたが使うべきだと思います

WHERE OrderPeriodID ='" + OrderPeriodStatus.SelectedValue + "'");

OrderPeriodの後にIDビットがありません。

于 2012-08-31T14:04:20.987 に答える
0

オブジェクトから値Request.Formを取得して、テキスト使用ddl.Items.FindByValueメソッドを取得してみてください

    var value = Request.Form[DropDownListnew.UniqeID];
    var text = DropDownListnew.Items.FindByValue(value);
于 2012-08-31T14:22:21.207 に答える