2009-07-07 8 views
1

私が探しているのは、asp.net内のMS-Accessスタイル連続フォームを模倣する方法です。ある特定のケースでは、データソース内の値にバインドされた各行のドロップダウンリストを返すデータソースにバインドされたコントロールが必要です。いずれかのドロップダウンリストを変更すると、即座にデータベースの更新が実行されます。ASP.netドロップダウンリストのリスト - Access連続フォームと似ています

私はRepeater.ItemDataBoundイベント内にDropDownList.SelectedValueを割り当てて、リピータコントロールを使用してこれを達成する途中です。

しかし、今、私は、DropDownListコントロールにOnSelectedIndexChangedイベントを追加すると仮定 - どのように私は、私が上であった行を知るためにリピータを照会します(たとえば、主キーの値を、取得する)

私はありません確かにこれは簡単に行うことができます..私は本当に何をしなければならないのですか?私は編集する行を選択する必要があるGridViewを使用したくない..私はちょうど任意の更新プログラムのドロップダウンリスト自動ポストバックをしたい。

希望はありますか?

乾杯! :D

答えて

0

例のために、我々はRecord

public class Record 
{ 
    public int Id; 
    public string Value; 
} 

というカスタムクラスにバインドされているあなたはRepeater.OnItemCreatedイベントにカスタムロジックを置く場合は、のIDへの主キーを付けることができると言うことができますドロップダウンリスト

protected void Repeater_ItemCreated(object sender, RepeaterItemEventArgs e) 
{ 
    if (!(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)) 
     return; 

    var dataItem = e.Item.DataItem as Record; 
    if (dataItem == null) return; 

    var dropdown = e.Item.FindControl("myDropDown") as DropDownList; 
    if (dropdown == null) return; 

    dropdown.ID = dropdown.ID + dataItem.Id; 
} 

次に、SelectedIndexChangeで、イベントを発生させたドロップダウンからIDを引き出すことができます。

protected void SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var dropdown = sender as DropDownList; 
    if (dropdown == null) return; 

    var stringId = dropdown.ID.Replace("myDropDown", ""); 
    int id; 
    if (Int32.TryParse(stringId, out id)) 
    { 
     updateRecord(id, dropdown.SelectedValue); 
    } 
} 

これは非常に醜いハックですが、あなたが望むことをすることができるはずです。

+0

ありがとうNerdFury - 現時点で私にとって最良の選択肢かもしれないようですが、データバインディングの問題を回避する必要があります。 –

+0

さらに、私はIDを取得する方法を見つけることができませんでしたitemdataboundイベントまでのリピーターのデータソース。そこには(itemcreatedではなく)ドロップダウンリストのIDを変更できませんでした。だから今カスタムコントロールのワイアットのルートを下って行く... –

+0

ItemDataBoundイベントハンドラであなたのドロップダウンボックスのIDを変更するべきではありません理由はありません。あなたはそれを信じさせる何が起こっているのですか? – NerdFury

0

これに取り組む最も簡単な方法は、Access連続フォームのASP.NETスタイルを模倣することです。これは、行レベルのUIを処理するUserControlを作成し、その後、UserControlをリピータに配置することです。

関連する問題