выбранное значение не изменяется в asp:Dropdownlist

Хватит использовать Reflection! Это плохо!

Ну, хотя библиотека поддержки не дает нам возможность выбрать элемент из BottomNavigationView , который будет отображаться в первый раз, когда он будет виден, у нас есть две возможности:

Во-первых, используя цикл:

private void setupBottomNavigationView() {
    // Get the menu from our navigationBottomView.
    Menu bottomNavigationViewMenu = bottomNavigationView.getMenu();
    // Uncheck the first menu item (the default item which is always checked by the support library is at position 0).
    bottomNavigationMenu.findItem(R.id.action_one).setChecked(false);
    // Check the wished first menu item to be shown to the user.
    bottomNavigationMenu.findItem(R.id.action_two).setChecked(true);

    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

    Menu bottomNavigationMenu = bottomNavigationView.getMenu();
            for (int i = 0; i < bottomNavigationMenu.size(); i++) {
                if (item.getItemId() != bottomNavigationMenu.getItem(i).getItemId()) {
                    bottomNavigationMenu.getItem(i).setChecked(false);
                }
            }

            switch (item.getItemId()) {
                case R.id.action_one :
                    replaceFragment(new OneFragment());
                    break;
                case R.id.action_two :
                    replaceFragment(new TwoFragment());
                    break;
                case R.id.action_three :
                    replaceFragment(new ThreeFragment());
                    break;
            }
            return false;
        }
    });
}

Во-вторых, без цикла, но с переменной класса (поскольку логика выполняется из внутри внутреннего класса):

private void setupBottomNavigationView() {
    // Get the menu from our navigationBottomView.
    Menu bottomNavigationViewMenu = bottomNavigationView.getMenu();
    // Uncheck the first menu item (the default item which is always checked by the support library is at position 0).
    bottomNavigationViewMenu.findItem(R.id.action_one).setChecked(false);
    // Check the wished first menu item to be shown to the user. Also store that menu item on a variable to control when a menu item must be unchecked.
    mActiveBottomNavigationViewMenuItem = bottomNavigationViewMenu.findItem(R.id.action_two).setChecked(true);

    bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem selectedMenuItem) {
            switch (selectedMenuItem.getItemId()) {
                case R.id.action_one :
                    replaceFragment(new OneFragment());
                    break;
                case R.id.action_two :
                    replaceFragment(new TwoFragment());
                    break;
                case R.id.action_three :
                    replaceFragment(new ThreeFragment());
                    break;
            }

            if (selectedMenuItem != mActiveBottomNavigationViewMenuItem){
                mActiveBottomNavigationViewMenuItem.setChecked(false);
                mActiveBottomNavigationViewMenuItem = selectedMenuItem;
            }

            return false;
        }
    });
}

private MenuItem mActiveBottomNavigationViewMenuItem;

Когда выполняется метод setupBottomNavigationView ()? В методе Activity onCreate () посмотрите:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // ...
    setupBottomNavigationView();
}

Простой и без расширенного кода.

Надеюсь, это поможет!

6
задан Eoin Campbell 26 May 2009 в 09:33
поделиться

3 ответа

Хорошо ... кое-что ...

Первое DropDownList2_TextChanged не подключен к вашему DropDownList, поэтому я не могу понять, как это событие когда-либо сработает, если вы не выполните подключение в своем внутреннем коде

Второй

Вы скажете этот код здесь

DropDownList2.DataSource = td.DataSet
DropDownList2.DataSource = td
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString
DropDownList2.DataBind()

находится в вашем событии PageLoad. Вы завернули его в If Not IsPostBack , потому что в противном случае вы будете выполнять повторную привязку каждый раз и потеряете свой предыдущий выбор.

10
ответ дан 8 December 2019 в 13:01
поделиться

Когда вы привязываете данные в Page_Load, вы, по сути, также сбрасываете выбранный элемент.

Вы должны заключить любой код привязки, который существует в Page_Load, внутрь блок if (! IsPostBack).

EDIT: ... или If Not IsPostBack Then ... End If в VB.NET

5
ответ дан 8 December 2019 в 13:01
поделиться

вы можете попробовать использовать

DropDownList2.SelectedItem.Value

вместо

DropDownList2.SelectedItem.Text
3
ответ дан 8 December 2019 в 13:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: