2008-08-15 61 views
1

私はRailsの背景から来て、ASP.NETプロジェクト(ASP MVCではなく)でいくつかの作業をしています。新人質問:レコードのテーブルのカスタムエディタを作る最も簡単な方法は何ですか?例えばASP.NETでレコードをカスタム編集する最も良い方法は?

:私はデータ行の束を持っており、それぞれの「カテゴリ」フィールドを変更したい - 多分ドロップダウン、多分リンク、多分ユーザーがその中を

Railsでは、私は。行を繰り返してテーブルを作成し、行ごとにフォームを作成します。フォームには入力ボックスまたはドロップダウンがあり、 "/ item/edit/15?category = foo"のようなコントローラにデータを送信します.15はitemIDで、新しいカテゴリは "foo"でした。

私はASP.NETモデルを初めて使用していますが、これを行うための「正しい」方法は不明です。新しいデータを取得する最も簡単な方法は&です。私はカスタムコントロールを作成し、それを各行に追加しますか?どんな助けもありがたい。

答えて

2

現在、.NET 3.5 SP1に付属の新しい動的データを覗いてみることができます。スコット・ガスリーが、それはここにあなたのために流れるだろうどのように迅速かつ簡単にデモブログのエントリを持っています

http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx

エッジをカットすることを得ることなく、私は一致する厳密に型指定されたDataSetを生成するために、XSDジェネレータを使用したいです問題のテーブルと一緒に。これにより、すべてのCRUDステートメントを実行するために使用できるTableAdapterも生成されます。私は初期の1.0以来、これをやってきたなどEditIndex、SelectedIndexを、RowEditing、RowUpdated、としてそこから

、DataGridのレバレッジそれに関係するすべての標準テンプレート/イベントにバインドし、

この種の機能は、Frameworkのすべてのアップデートでますます合理化されました。

編集:Matt Bersethのブログにも素早く頷きたい。私はしばらくの間彼のものの多くを追いかけてきました、そしてそれは素晴らしいです!

0

相対的な柔軟性に応じてさまざまなレベルの複雑さがありますが、これを行うコントロールはいくつかあります。

これを行う伝統的な方法は、テーブルレイアウトを提供するDataGridコントロールです。外観に柔軟性を持たせたい場合は、DataListコントロールとListViewコントロールにも、フィールドの編集、挿入、または削除の組み込みサポートが組み込まれています。

実際のasp.netコントロールの優れた例についてはMatt Berseth's blogをご覧ください。

0

回答ありがとうございます。それは、DataGridをカスタマイズするように見えます。任意のASP.NET初心者のために、私がやっていることはここにあります

<asp:DataGrid ID="GridView1" runat="server" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundColumn DataField="RuleID" Visible="False" HeaderText="RuleID"></asp:BoundColumn> 
     <asp:TemplateColumn HeaderText="Category"> 
     <ItemTemplate> 
      <!-- in case we want to display an image --> 
      <asp:Literal ID="litImage" runat="server"> 
      </asp:Literal> 
      <asp:DropDownList ID="categoryListDropdown" runat="server"></asp:DropDownList> 
     </ItemTemplate> 
     </asp:TemplateColumn> 

    </Columns> 
</asp:DataGrid> 

これはデータグリッドを作成します。私たちは、その後、(私の場合のDataTable)のデータソースにバインドし、データグリッドのintialドロップダウンを移入する

foreach (DataGridItem item in this.GridView1.Items) 
{ 
    DropDownList categoryListDropdown = ((DropDownList)item.FindControl("categoryListDropdown")); 
    categoryListDropdown.Items.AddRange(listItems.ToArray()); 
} 

のようなものを使用することができます。この場合、item.Cells [0] .textにアクセスしてRuleIDを取得することもできます。

自分のための注意:ASP.NETモデルは、コードビハインドファイルのすべてを行います。高いレベルでは、常にGridView1を反復処理できます。各行を取得する項目、およびitem.findControl( "ControlID")を使用して、「更新」ボタンを押した後など、各項目に格納されている値を照会します。

関連する問題