0

私はこれが重複した質問であることを知っています。重複した質問で解決策を見つけようとしましたが、失敗しました。

状況は、ComboBranchとComboPanelという2つのコンボボックス(Telerik Winforms)を持っていることです。ユーザーがComboBranchでいくつかの値を選択すると、ComboPanelは異なる値を表示します。

これがコードです

 private void tbDropBranch_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
    {
        dataPanel();
    }

    void dataPanel()
    {

        DataTable dtPanel = dataBinding._valuePanel(Convert.ToInt32(tbDropBranch.SelectedValue.ToString())); // Error in here
        tbDropPanel.DataSource = new BindingSource(dtPanel, null);
        tbDropPanel.DisplayMember = "panelName";
        tbDropPanel.ValueMember = "panelID";

    }

アップデート

イベントtbDropBranch_Leaveを実行すると、動作します。しかし、tbDropBranch_SelectedIndexChangedを使用するとエラーが発生するのはなぜですか?

 private void tbDropBranch_Leave(object sender, EventArgs e)
        {

            dataPanel();

        }

解決

私はこれが好きです:

void getIdBranch()
    {

        if ("System.Data.DataRowView" == tbDropBranch.SelectedValue.ToString())
        {
            return;
        }
        else
        {

            DataTable dtPanel = dataBinding._valuePanel(Convert.ToInt32(tbDropBranch.SelectedValue.ToString()));
            tbDropPanel.DataSource = new BindingSource(dtPanel, null);
            tbDropPanel.DisplayMember = "panelName";
            tbDropPanel.ValueMember = "panelID";
        }

    }

助けてくれた人たちに感謝します..:)

4

3 に答える 3

1

これは、をtbDropBranch.SelectedValue.ToString()返すためSystem.Data.DataRowViewです。Convert.ToInt32その値をintに変換することはできません。あなたは何か他のものを渡す必要があるでしょう。

于 2012-10-24T16:29:57.893 に答える
1

またはtbDropBranch.SelectedValue.ToString()に変換できないため、例外が発生していると思います。例外を受け取らないように、実行する前に文字列を解析できるかどうかを確認するために、最初に次の行を挿入することをお勧めします。受け取っている正確な例外を提供していただければ幸いです。IntegerInt

   int x = 0;
   void dataPanel()
    {
        if (Int32.TryParse(tbDropBranch.SelectedValue.ToString(), out x)) //Check if tbDropBranch.SelectedValue.ToString() is a valid integer
        {
          DataTable dtPanel = dataBinding._valuePanel(Convert.ToInt32(tbDropBranch.SelectedValue.ToString())); // Error in here
          tbDropPanel.DataSource = new BindingSource(dtPanel, null);
          tbDropPanel.DisplayMember = "panelName";
          tbDropPanel.ValueMember = "panelID";
        }
    }

インデックスに基づいて現在選択されているアイテムの正確な値を取得するには、いつでも次のことを試すことができます

if (ComboBranch.SelectedIndex != -1) // Execute the following only if there's a selected index
   {
        ComboBranch.Items[ComboBranch.SelectedIndex].ToString(); // Get the value of the selected index
   }

ありがとうござい
ます。これがお役に立てば幸いです:)

于 2012-10-24T16:44:47.933 に答える
0

パラメータとしてをdataBinding._valuePanel使用しているとは思えません...多分それは?Int32int

dataBinding._valuePanel(int.Parse(tbDropBranch.SelectedValue.ToString()));
于 2012-10-24T16:28:02.287 に答える