1

人の名前を選択するドロップダウンリストがあります。しかし、イベントの同じIDに同じ値を2つ持ちたいので、使用されている値を無効にする必要があります...データベースでは、compoudキーを使用して問題を修正しましたが、これをプログラムで解決する必要があります。

これは私の短いデータ ソースです。

<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:fotbalConnectionString %>"
    SelectCommand="SELECT table1.ID_person, table1.ID_event,FROM [table1] WHERE ([ID_event] = @ID_event)        
    <SelectParameters>
        <asp:QueryStringParameter 
            DefaultValue="0" 
            Name="ID_event" 
            QueryStringField="id" 
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
4

1 に答える 1

0

キーがdropDownListにある値の識別子になり、値が使用されたかどうかを示すブール値になるハッシュを作成できます。

ハッシュを更新するメソッドが必要になるため、DDL (dropDownList) から項目を選択するたびに、使用済みまたは未使用としてマークします (該当する場合)。このメソッドは、SelectedIndexChanged イベントから呼び出すことができます。

また、選択されていない (値 == false) アイテムを取得する DDL のハッシュから値 (キー)をリストするメソッドも必要です。

データを保存するプロパティには、次のようなゲッターを含めることができます。

private Hashtable SelectedValuesHash        
{
        get
        {
            object o = ViewState["SelectedValuesHash"];

            if (o == null)
                return new Hashtable();
            else
                return (Hashtable)o;
        }
    }

値を追加する方法は次のようになります。

 private void AddSelectedValuesToHash(int key, bool hasBeenSelected)
    {
        var rows = ViewState["SelectedValuesHash"] as Hashtable;

        if (rows == null)
        {
            rows = new Hashtable();
            ViewState["SelectedValuesHash"] = rows;
        }
        rows.Add(key, hasBeenSelected);
    }
于 2013-04-23T09:36:31.100 に答える