Member 4756577 Ответов: 2

Как сделать функцию отмены в выпадающем списке ASP.NET с#


Может ли кто - нибудь из вас быстро направить меня asp.net c# очень простая проблема
у меня есть два выпадающих списка list1 и list2. В списке 1 есть все имена пользователей с их идентификаторами, мне удалось перенести одного пользователя с его идентификатором в список 2, но если я хочу сделать отмену вида деятельности, я не могу сделать это таким же образом


ddUser.DataValueField.(??????) = ddSelectedUser.DataValueField;

не могли бы вы сказать мне, какой вариант я должен выбрать ?? так что я могу запустить свою программу в соответствии с моими требованиями.

Что я уже пробовал:

Этот код работает нормально
protected void btnTransferUser_Click(object sender, System.EventArgs e)
    {
        if (ddUser.Items.Count < 1)
        {
            btnTransferUsr.Enabled = false;
        }
        else
        {
            string strUserName;
            int intUserID;

            strUserName = ddUser.SelectedItem.Text;
            if (!string.IsNullOrEmpty(strUserName))
            {
                lblErrorUsrCreation.Text = "";
                intUserID = int.Parse(ddUser.SelectedItem.Value);
                ddSelectedUser.DataValueField = ddUser.SelectedValue.ToString();
                ddSelectedUser.Items.Add(new ListItem(strUserName));
                ddUser.Items.Remove(ddUser.Items.FindByText(strUserName));
                btnTransferUsr.Enabled = false;
                btnUndoTransferUsr.Enabled = true;
            }
            else
            {
                lblErrorUsrCreation.Text = "User(s) Not Selected To Transfer";
                ddUser.TabIndex = 0;
                return;
            }
        }
    }

но в то же время, если я хочу сделать это с помощью undo ... я не в состоянии сделать это

protected void btnUndoTransferUsr_Click(object sender, System.EventArgs e)
    {
        if (ddSelectedUser.Items.Count < 1)
        {
            btnUndoTransferUsr.Enabled = false;
        }
        else
        {
            string strUserName;
            strUserName = ddSelectedUser.SelectedItem.Text;
            if (!string.IsNullOrEmpty(strUserName))
            {
                //ddUser.DataValueField = ddSelectedUser.DataValueField;
                ddUser.DataValueField = "113";
                lblErrorUsrCreation.Text = "Heloooooooo" + ddUser.DataValueField;
                return;
            }
            else
            {
                lblErrorUsrCreation.Text = "User(s) Not Selected From Selected User List, To Undo Transfer";
                ddSelectedUser.TabIndex = 0;
                return;
            }
        }
    }

BillWoodruff

Итак, что вы делаете, чтобы сохранить информацию о последнем действии пользователя, чтобы вы могли отменить последнее действие ?

Вы хотите разрешить перенос нескольких элементов ? Если переносится более одного элемента, вы хотите отменить несколько элементов ?

Если список пользователей не меняется, вы можете просто реализовать многократную отмену.

2 Ответов

Рейтинг:
1

Mahesh Pratap Singh

Имейте 2 разных словаря для каждого выпадающего списка и добавляйте/удаляйте их из этого словаря на основе вашего do/undo/redo.
И пусть словарь будет источником данных для таких выпадающих списков, как этот:

ddUser.DataSource = userDictionary;
ddUser.DataTextField = "Value";
ddUser.DataValueField = "Key";
ddUser.DataBind();

ddSelectedUser.DataSource = selectedUserDictionary;
ddSelectedUser.DataTextField = "Value";
ddSelectedUser.DataValueField = "Key";
ddSelectedUser.DataBind();


BillWoodruff

Примечание ОП использует ASP.NET 'DropDownList здесь: ваш пост не отвечает на заданный вопрос, который заключается в том, как реализовать 'undo. использование словаря здесь было бы неудобно, потому что 'Remove возвращает 'bool, а не 'KeyValuePair

Рейтинг:
1

Member 4756577

Дорогие все, спасибо за Вашу поддержку.. я пробовал это и это работает пожалуйста проверьте

protected void btnTransferUser_Click(object sender, System.EventArgs e)
{
    if (ddUser.Items.Count < 1)
    {
        btnTransferUsr.Enabled = false;
    }
    else
    {
        string strUserName;
        int intUserID;

        strUserName = ddUser.SelectedItem.Text;
        if (!string.IsNullOrEmpty(strUserName))
        {
            //lblErrorUsrCreation.Text = "";
            //ddSelectedUser.DataValueField = ddUser.SelectedValue.ToString();
            //ddSelectedUser.Items.Add(new ListItem(strUserName));
            //ddUser.Items.Remove(ddUser.Items.FindByText(strUserName));
            //btnTransferUsr.Enabled = false;
            //btnUndoTransferUsr.Enabled = true;

            string x = ddUser.SelectedItem.Text;
            int id = int.Parse(ddUser.SelectedItem.Value);
            int lidx = ddUser.SelectedIndex;

            ddSelectedUser.Items.Add(new ListItem(x, id.ToString()));

            ddUser.Items.RemoveAt(lidx);

            btnTransferUsr.Enabled = false;
            btnUndoTransferUsr.Enabled = true;

        }
        else
        {
            lblErrorUsrCreation.Text = "User(s) Not Selected To Transfer";
            ddUser.TabIndex = 0;
            return;
        }
    }
}
protected void btnUndoTransferUsr_Click(object sender, System.EventArgs e)
{
    if (ddSelectedUser.Items.Count < 1)
    {
        btnUndoTransferUsr.Enabled = false;
    }
    else
    {
        string strUserName;
        int intUserID;

        strUserName = ddSelectedUser.SelectedItem.Text;
        if (!string.IsNullOrEmpty(strUserName))
        {
            //lblErrorUsrCreation.Text = "";
            //intUserID = int.Parse(ddSelectedUser.SelectedValue);
            //ddUser.DataValueField = ddSelectedUser.SelectedValue.ToString();
            //ddUser.Items.Add(new ListItem(strUserName));
            //ddSelectedUser.Items.Remove(ddSelectedUser.Items.FindByText(strUserName));
            //btnUndoTransferUsr.Enabled = false;
            //btnTransferUsr.Enabled = true;

            string x = ddSelectedUser.SelectedItem.Text;
            int id = int.Parse(ddSelectedUser.SelectedItem.Value);
            int lidx = ddSelectedUser.SelectedIndex;

            ddUser.Items.Add(new ListItem(x, id.ToString()));

            ddSelectedUser.Items.RemoveAt(lidx);
            if (ddSelectedUser.Items.Count > 0)
            {
                btnUndoTransferUsr.Enabled=true;
            }
            else
            {
                btnUndoTransferUsr.Enabled = false;
                btnTransferUsr.Enabled = true;
            }
        }
        else
        {
            lblErrorUsrCreation.Text = "User(s) Not Selected To Transfer";
            ddSelectedUser.TabIndex = 0;
            return;
        }
    }
}