de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 James213
James213
質問

私のコントロールのどれもが、ASPコントロールから引き出すときにパネルに表示されない

私はメソッドで作成され、それのプレースホルダーのように動作し、ページにロードするときに、ページをアップロードするときにうまく動作するパネルに読み込ま動的に構築されたテーブルを持っている。テーブルが現れて、私が望む方法を正確にロードします。私の唯一の問題は、ユーザーがテーブルの列を更新するために選択するオプションを持つ2つのDropboxがあることです。問題は、私がクリックして更新ボタンをクリックすると、ページを検索して、対応するコントロール(つまり、ドロップボックスの値)が検索され、適切な値が得られてテーブルが更新されます。

これは私の更新ボタンでやっていることです:

        protected void Update_Click(object sender, EventArgs e)
    {
      UpdateFail.Visible = false;
      UpdateSucceed.Visible = false;
      string MachineTypeID;
      string MachineModelID;
      string machinetypeid;
      string machinemodelid;
      int i = 0;
      machine = inputsService.GetMachineSiteDetails(SiteID);
      foreach (Machine Machine in machine)
      {
          try
          {                  
              machinetypeid = Machine.ID.ToString() + "type";
              machinemodelid = Machine.ID.ToString() + "model";
              Control type = MyExtensions.FindControlRecursive(this, machinetypeid);
              Control model = MyExtensions.FindControlRecursive(this, machinemodelid);
              RadComboBox machinetype = (RadComboBox) type;
              RadComboBox machinemodel = (RadComboBox) model;
              MachineTypeID = machinetype.SelectedValue;
              MachineModelID = machinemodel.SelectedValue;
              if (MachineTypeID != "")
              {
                  inputsService.UpdateMachineModels(Machine.ID, MachineModelID);
                  i++;
              }
              if (MachineModelID != "")
              {
                  inputsService.UpdateMachineTypes(Machine.ID, MachineTypeID);
                  i++;
              }
          }
          catch (Exception ex)
          {
              {
                  logger.ErrorFormat(
                      "Update_Click exception occurred when attempting to update the database {0}", ex);
              }
          }
      }
      if (i != 0)
      {
          UpdateFail.Visible = false;
          UpdateSucceed.Visible = true;
      }
      else
      {
          UpdateSucceed.Visible = false;
          UpdateFail.Visible = true;
      }
      //clear out the old table and replace with the newly revized table.
      AddTable();
    }

今私の問題は、以下の2行のコードと関係がある

                  Control type = MyExtensions.FindControlRecursive(this, machinetypeid);
              Control model = MyExtensions.FindControlRecursive(this, machinemodelid);

MyExtensions.FindControlRecursive()メソッドは次のとおりです。

        public static Control FindControlRecursive( Control root, string id )
    {
        System.Web.UI.Control controlFound;
        if ( root != null )
        {
            controlFound = root.FindControl( id );
            if ( controlFound != null )
                return controlFound;
            foreach ( Control c in root.Controls )
            {
                controlFound = FindControlRecursive( c, id );
                if ( controlFound != null )
                    return controlFound;
            }
        }
        return null;
    }

Update1 What it is doing is when it gets to the findcontrol method, it can't find the table within the pannel so it returns null and fails to update the table.

私が知りたいことは、ここで間違っていることと、この問題をどうやって解決できるのかです。

どんな助けや提案も大歓迎です。

ありがとうございました

0 2011-10-27T15:52:37+00:00 2
 James213
James213
編集された質問 27日 10月 2011 в 7:56
プログラミング
asp.net
controls
c#
html
Shai Cohen
27日 10月 2011 в 4:49
2011-10-27T16:49:17+00:00
さらに
ソース
編集
#56790320

あなたはいつテーブルを作成していますか?テーブルを動的に作成する場合は、ViewStateをリストアできるようにOnInitより後で再作成する必要があります。

1
0
Chuck Savage
27日 10月 2011 в 4:52
2011-10-27T16:52:16+00:00
さらに
ソース
編集
#56790321

なぜこの再帰的検索コントロールを試してみませんか:

public static Control FindControlRecursive(this Control Root, string Id)
{
    if (Root.ID == Id)
        return Root;

    foreach (Control Ctl in Root.Controls)
    {
        Control FoundCtl = FindControlRecursive(Ctl, Id);
        if (FoundCtl != null)
            return FoundCtl;
    }

    return null;
}

Shaiさんが言ったことは重要です - あなたのテーブルは、Updateメソッドでアクセスする前に、データとユーザー入力で再作成/初期化されていますか?

1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 6日前
2
Hideo Nakagawa
登録済み 1週間前
3
Sergiy Tytarenko
登録済み 1週間前
4
shoxrux azadov
登録済み 1週間前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属