2012-05-10 21 views
0

私はMVC3を使用しています。私はサービスからのデータをドロップダウンにバインドしています。しかし、ページがポストバックされ、フィルタがリストに適用されると、ドロップダウンはグリッド内のフィルタレコードの値を示します。なぜなら、私は常にサービスから来るリストをバインドするからです。ドロップダウンリストをバインドしてポストバック後に維持する

ただし、データベース内のすべてのレコードを常に表示するようにドロップダウンします。

+1

あなたの質問を適切に説明していないことが恐れられています。あなたのコードを表示することで、間違いなく疑いが解消されます。 –

+1

私のコードは役に立ちましたか?もしそうなら、それを認められたものとしてマークしてください。 –

答えて

3

私はあなたの質問をはっきり理解できません。しかし、それはあなたがあなたの見解で持っているドロップダウンだと思われますか?私はあなたが何をバインドしようとしているかわからないので、私は自分自身を作成し​​ましたが、自分のコードを見て、あなたのシナリオに合わせて修正します。あなたのビューで

@model YourProject.ViewModels.YourViewModel 

ビューでは、ドロップダウンリストの銀行のリストがあります。

あなたの銀行のドロップダウン:

<td><b>Bank:</b></td> 
<td> 
    @Html.DropDownListFor(
      x => x.BankId, 
      new SelectList(Model.Banks, "Id", "Name", Model.BankId), 
      "-- Select --" 
    ) 
    @Html.ValidationMessageFor(x => x.BankId) 
</td> 

あなたのビューモデルのビューに戻ります。

public ActionResult Create() 
{ 
    YourViewModel viewModel = new YourViewModel 
    { 
      // Get all the banks from the database 
      Banks = bankService.FindAll().Where(x => x.IsActive) 
    } 

    // Return the view model to the view 
    // Always use a view model for your data 
    return View(viewModel); 
} 

[HttpPost] 
public ActionResult Create(YourViewModel viewModel) 
{ 
    if (!ModelState.IsValid) 
    { 
      // If there is an error, rebind the dropdown. 
      // The item that was selected will still be there. 
      viewModel.Banks = bankService.FindAll().Where(x => x.IsActive); 

      return View(viewModel); 
    } 

    // If you browse the values of viewModel you will see that BankId will have the 
    // value (unique identifier of bank) already set. Now that you have this value 
    // you can do with it whatever you like. 
} 

あなたの銀行のクラス:

public class YourViewModel 
{ 
    // Partial class 

    public int BankId { get; set; } 
    public IEnumerable<Bank> Banks { get; set; } 
} 

は、あなたのアクションメソッドを作成します

public class Bank 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool IsActive { get; set; } 
} 

これは簡単です。私はこのことができます:)願ってい

PS:は常に、将来の記事で覚えて、我々はより良​​いあなたを助けることができるように、できるだけ多くの詳細を教えてください。また、コードサンプルを表示して、すでに行ったことを確認することも忘れないでください。私たちはより良い詳細を持つことができます。

+0

これを念頭に置いていただきありがとうございます。:) – NewToBirtReporting

+0

人々にお手伝いしたい場合は、回答の受け入れを開始する必要があります。 –

+0

受け入れ方???? – NewToBirtReporting

0

モデルを[[Http Post]]アクションにポストバックすると、モデルにバインドされたバンクのドロップダウンリスト値のリストを持つことができません。私はモデルが無効である場合、あなたは私はあなたが再びデータベースをヒットする必要があると想定され、再びすべての銀行のリストを取得するには

viewModel.Banks = bankService.FindAll().Where(x => x.IsActive); 

コードを呼び出すことがわかります。

ありがとうございました

関連する問題