0

リストボックスにデータが入力されますが、選択した値が見つかりません。null またはデフォルト値 (最初の項目) のいずれかです。別の項目を選択するたびに、null に変わります。私は !ispostback を実行しましたが、まだ何もしていません。asp.net/c#/sql でウィザードを使用します。どんな助けでも大歓迎です。

     protected void Page_Load(object sender, EventArgs e)
    {
        ListBox lstService = (ListBox)Wizard1.FindControl("lstService");
        string s = lstService.SelectedValue.ToString();
        int s1 = lstService.SelectedIndex;

        if (s == "MarketTrack Toys")
        {
            Wizard2.Visible = true;
        }

        if (!Page.IsPostBack)
        {
            BindGrid();
        }

        if ((Wizard1.ActiveStepIndex <= 5) && (Wizard1.ActiveStepIndex != 0))
        {
            Wizard1.DisplaySideBar = true;
            Wizard2.DisplaySideBar = false;
        }
        else
        {
            Wizard1.DisplaySideBar = false;
            Wizard2.DisplaySideBar = true;
        }

    }

    private void BindGrid()
    {

        dAS = new DataAccessClass();
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();


        ds = dAS.func_FillDataset("select servicename from dbo.Services", "Services");
        ListBox lstService = (ListBox)Wizard1.FindControl("lstService");
        lstService.DataSource = ds;
        lstService.DataTextField = "ServiceName";
        lstService.DataValueField = "ServiceName";
        lstService.DataBind();

        if (lstService.Items.Count > 0)
        {
            lstService.SelectedIndex = 0;
        }
    }
4

1 に答える 1

1

デバッガーで実行します。

ListBoxに配置されているオブジェクトは、探している文字列に変換することを知りませんToString()

で名前を取得する方法を指定するため、ListBox は正しく入力されます。lstService.DataTextField = "ServiceName";

ListBox に入れるオブジェクトを作り直すか、代わりにそのオブジェクトの ToString にオーバーライドする必要がある場合があります。

于 2012-09-07T20:47:21.663 に答える