2017-01-13 16 views
0

更新表示値

私はこれに反対これらの値の値を選択するときddl_categoryでいくつかの値があり、「 - 」ddl_itemの表示が...あるので、私はddl_Cateogryで選択ddl_itemで選択した値をしたいです... 。

私は両方ddl_Cateogryとddl_itemでこれを行うが、何も

Protected Sub ddl_Item_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddl_Item.SelectedIndexChanged 
     If (ddl_Item.Text = "-") Then 
      ddl_Item.Text = ddl_category.Text 
     End If 
    End Sub 

Protected Sub ddl_cateogry_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl_cateogry.SelectedIndexChanged 
     If (ddl_Item.Text = "-") Then 
      ddl_Item.Text =ddl_cateogry.Text 
     End If 

     GetItem() 
     ddl_cateogry.Visible = True 
     lbt_ter2.Visible = True 
     ddl_Item.Visible = True 
     lbt_tie.Visible = True 
End Sub 
+3

あなたは何を試しましたか? –

+0

あなたのコードの一部で投稿を編集できますか? –

+0

@AfnanAhmadチェックアップデート –

答えて

0

ご質問はリサイズについてです、あなたがタグ付けされたとして、ASP.NETはない働きません。
私が正しくあなたの質問を理解している場合、あなたはddl_ItemコンボボックスのTextChangedイベント使って、その結果を得ることができます:もちろん

Protected Sub ddl_Item_TextChanged(sender As Object, e As EventArgs) Handles ddl_Item.TextChanged 
    If (ddl_Item.Text = "-") Then 
     ddl_Item.Text = ddl_subcategory.Text 
    End If 
End Sub 
+0

でそれを行う方法を示すことができます私はこれを行う...しかし、値が表示されません..私はサブカテゴリから値を選択すると、果物の値の表示 " - "項目の中で " - "の代わりにitemのサブカテーテルから果物の値を取得したい –

+0

ddl_Itemコンボボックスでtextchangedイベントを定義しましたか? – jonathana

+0

申し訳ありませんが、私はあなたを取得していない? –

0

を、このような何かを行うための最善の方法は、上のjavascript/JSONでそれを行うことですクライアント、あなたはポストバックを行う必要はありません。また、jquery/AJAXで行うことができますが、私の例では、通常のasp.netポストバックでそれを行う方法を示します。これは擬似コードです。今

' first you need a class that can help you to retrieve the lists for your drop downs 
' you need a drop down item class. You will load 3 lists of them 
class DropdownItem 
    Public Property Group as String 
    Public Property Display as String 
    Public Property Value as String 
end class 
' wrap all into one item 
class CacheWrapper 
    Public Property Categories as List(Of DropdownItem) 
    Public Property SubCategories as List(Of DropdownItem) 
    Public Property Items as List(Of DropdownItem) 
end class 
' enum to distinct load 
public enum DDLType 
    Category = 1 
    SubCategory = 2 
    Item = 3 
end enum 

class DropDownLoader 

    dim _lock as new Object() 
    constant _cacheKey as string = "guid" 


    public shared sub LoadDropDown(ddl as DropdownList, group as string, type as DDLType) 
     dim wrapper as CacheWrapper = httpcontext.current.cache.get(_cacheKey) 
     if wrapper is Nothing then 
      SyncLock lockobject 
       wrapper = httpcontext.current.cache.get(_cacheKey) 
       if wrapper is Nothing then 
        LoadAndCacheLists() 
        wrapper = httpcontext.current.cache.get(_cacheKey) 
       end if 
      End SyncLock 
     end if 

     ' here you actually load drop down based on request 
     ddl.Items.clear() 
     select case type 
      case DDLType.Category 
       wrapper.Categories.forEach(sub(i) ddl.Items.Add(i.display, i.Value)) 
      case DDLType.SubCategory 
       wrapper.SubCategories.Where(function(i) i.Group = group).ToList().forEach(sub(i) ddl.Items.Add(i.display, i.Value)) 
      case DDLType.Item 
       wrapper.Items.Where(function(i) i.Group = group).ToList().forEach(sub(i) ddl.Items.Add(i.display, i.Value)) 
     end select 

    end sub 

    private shared sub LoadAndCacheLists 
     ' here you load from db you Category, subcategory and items and load them into lists. 
     ' you set them into CacheWrapper and do something like this using your favorite cache - http, runtime, nCache, enterprise library, etc. 
     httpcontext.cache.add(_cacheKey, myCacheWrapper) 

     ' for this excercise, I do manual ++!! ONLY to show how structure should look 
     dim catList As new List(Of DropdownItem)() ' note - no group here 
     catList.add(new DropdownItem() With { .Display = "Cat 1", .Value = "Cat1Id" }) 
     catList.add(new DropdownItem() With { .Display = "Cat 2", .Value = "Cat2Id" }) 

     dim subcatList As new List(Of DropdownItem)() 
     subcatList.add(new DropdownItem() With { .Group = "Cat1Id" .Display = "Sub Cat 1", .Value = "SubCat1Id" }) 
     catList.add(new DropdownItem() With { .Group = "Cat1Id" .Display = "Sub Cat 2", .Value = "SubCat2Id" }) 
     catList.add(new DropdownItem() With { .Group = "Cat2Id" .Display = "Sub Cat 3", .Value = "SubCat3Id" }) 
     catList.add(new DropdownItem() With { .Group = "Cat2Id" .Display = "Sub Cat 4", .Value = "SubCat4Id" }) 

     dim itemList As new List(Of DropdownItem)() 
     itemList.add(new DropdownItem() With { .Group = "SubCat1Id" .Display = "Item 1", .Value = "Item1Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat1Id" .Display = "Item 2", .Value = "Item2Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat2Id" .Display = "Item 3", .Value = "Item3Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat2Id" .Display = "Item 4", .Value = "Item4Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat4Id" .Display = "Item 5", .Value = "Item5Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat4Id" .Display = "Item 6", .Value = "Item6Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat3Id" .Display = "Item 7", .Value = "Item7Id" }) 
     itemList.add(new DropdownItem() With { .Group = "SubCat3Id" .Display = "Item 8", .Value = "Item8Id" }) 
    end sub 
end class 


' With all above in place, all you have to do is put a little code into your `SelectedIndexChanged` handlers 

sub form_load 'page_load? 

    ' here you set category 
    DropDownLoader.LoadDropdown(ddlCategory, nothing, DDLType.category) 
end sub 

sub ddlCategory_SelectedIndexChanged 

    DropDownLoader.LoadDropdown(ddlSubCategory, ddlCategory.SelectedValue, DDLType.Subcategory) 
    ddlItems.Items.Clear() 
end sub 

sub ddlSubCategory_SelectedIndexChanged 

    DropDownLoader.LoadDropdown(ddlItems, ddlSubCategory.SelectedValue, DDLType.Items) 

end sub 

sub ddlItems_SelectedIndexChanged 

    ' here you do your business 

end sub 

、これは一般的なアプローチで、あなたがあれば、その後、いくつかの必要がある、あるいはSelectedIndexChangedに全部または一部のコードをバイパスする_indexChangedbyProgramのような変数を導入することができます。 「空のアイテム」がある場合、バイパスして次のddlをクリアするロジックが必要です。あなたはこれを調整する必要があります。しかし、アプローチはそこにあります。

+0

0アイテムIDは、選択だからcom; licateddddd –

+0

@cooluserそうではありません。これはあなたが持っている問題を解決するための規則的なパターンです。引用:*「システムに複雑さを導入する理由は、拡張のシンプルさを達成することです」*または*拡張*を*維持*に置き換えることができます。明日の場合、4番目のドロップダウンを導入する必要があると言えば、システムは簡単にサポートできます。 –