4

サー/マダム今私の問題は、ドロップダウンリストとテキストボックスを使用してページのグリッドビューをフィルタリングしたいということです。

つまり、次のような SQL を記述します。

Select  * from student where roll_no = 101;

右、

ここで、列 (roll_no上記のステートメント) をドロップダウン リストで選択し、値 (上記のステートメントでは 101) をテキスト ボックスに入力する必要があります。

要するに、ボタンをクリックしてドロップダウンリストとテキストボックスの値を使用してグリッドビューにデータを入力したい..

開発には、データセットとテーブル アダプターを使用しています。

助けてください..

4

2 に答える 2

1

ドロップダウンリスト(コンボボックス)とテキストボックスを使用してDataGridView、次の方法でフィルタリングします。これがあなたが探しているものだと思います。

まず、を入力しますDataGridView。とを使用しているDataSetと述べていますTableAdapters。を使用しBindingSourceてデータをに結び付けていると思いますDataGridView。その場合は、をFilter介してデータを取得できますBindingSource

私の設定はこれに似ています:

ここに画像の説明を入力してください

コンボボックスには、フィルターで使用するフィールドが含まれており、テキストボックスは適用する値です。コンボボックスの値はユーザーフレンドリーな名前であるため、フィルタリング対象のフィールドを理解できます。

フィルタを適用するコードは次のとおりです。

private void ApplyFilter()
{
     var filterEntered = FilterTextBox.Text.Trim().ToLower();

     MyBindingSource.RemoveFilter(); // remove previous filter

     string filterText = string.Empty;
     string filterComboText = string.Empty;

     switch (FilterComboBox.Text)
     {
         case "Profile":
            filterComboText = "TSProfile"; // column name in the query
            break;
         case "User Id":
            filterComboText = "TSUserId";
            break;
         case "Center":
            filterComboText = "TSCenter";
            break;
         case "Prefix":
            filterComboText = "TSPrefix";
            break;
     }

     filterComboText = filterComboText + " = '";

     filterText += (string.IsNullOrEmpty(filterComboText) ? string.Empty : filterComboText);
     filterText += (!string.IsNullOrEmpty(filterText) && !string.IsNullOrEmpty(filterEntered) ? filterEntered + "'" : string.Empty);

     MyBindingSource.Filter = filterText;
}

基本的には、コンボボックスのテキスト名を取得してから、テキストボックス内のテキストを取得し、フィルターをBindingSourceに適用します。

MSDNには、完全なサンプルコードが含まれているフィルタリングに関する記事があります。

私がお勧めすることの1つは、フィルターを簡単に削除する方法をユーザーに提供することです。私は[フィルターの削除]ボタンを使用します。

于 2012-05-01T12:07:53.260 に答える
0

最初に簡単なコードを示していただけると助かります。

あなたはこのようなことを試すことができます:

コードビハインドで、アイテムをドロップダウンリストに追加します。

List<yourObject> list = new List<yourObject>();
foreach (yourObject i in list)
 {
  DropdownList1.Items.Add(new ListItem("" i.name, "" + i.id));
 }

ここで例を挙げます。i.name は特定の生徒の名前であり、i.id はその生徒に関連付けられた ID です。

次のように、ドロップダウン リストの autopostback 属性が true に設定されていることを確認します。

 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
        onselectedindexchanged="DropDownList1_SelectedIndexChanged">

次に、ドロップダウン リストの選択した Index Changed イベントで、次の操作を行います。

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
yourDataControl.DataSource = someMethod(Convert.toInt32(DropDownList1.SelectedValue));
yourDatacontrol.DataBind();
}

私が言ったように、私はあなたが何をしようとしているのか、どのようにしようとしているのか完全にはわかりません. 私が説明している方法では、テキストボックスに特定の値を入力する必要はありません。ドロップダウンリストでアイテムを選択すると、値が自動的に取得されます。この場合、ドロップダウンリストで選択したアイテムに関連付けられた ID です。

于 2012-04-30T17:51:26.167 に答える