Получить все переданные элементы RadListBox на Label и привязать RadGrid, используя RadListBox_items, ID

1.) Я использую приведенный ниже код для передачи предметов из одного RadListBox другому.

HTML код:

A<telerik:RadListBox ID="RadListBox1" runat="server" Width="250px" Height="200px" 
 TransferMode="Move" AllowTransfer="True" TransferToID="rlbGI_BU" SelectionMode="Multiple"
 OnTransferred="RadListBox1_Transferred" 
 AutoPostBackOnTransfer="true">
</telerik:RadListBox>
B<telerik:RadListBox ID="RadListBox2" runat="server" Width="250px" Height="200px"
 EnableEmbeddedSkins="False" Skin="MetroRed" ImagesPath="../App_Themes/MetroRed/ListBox"
 OnInserted="RadListBox2_Inserted" SelectionMode="Multiple"
 OnDeleted="RadListBox2_Deleted" AutoPostBackOnDelete="true">
</telerik:RadListBox>
<br />
<asp:Label runat="server" ID="lblDeletedList2"></asp:Label> &nbsp; &nbsp;
<asp:Label runat="server" ID="lblInsertedList2"></asp:Label> &nbsp; &nbsp;
<asp:Label runat="server" ID="lblTransdList1"></asp:Label> &nbsp; &nbsp;

Код C#:

private string _SPID = null;
private DataTable _dtSPBU = null;

protected void Page_Load(object sender, EventArgs e)
{
    _SPID = Request.QueryString["SPID"];
    if (!string.IsNullOrEmpty(_SPID))
    {
        _dtSPBU = SDM.SPBU.GetSPBUBySPBUfoSPID(_SPID);
    }
}

protected void bind_RadListBox1()
{
    RadListBox1.DataTextField = "BUName";
    RadListBox1.DataValueField = "SPBUfoBUID";
    RadListBox1.DataSource = _dtSPBU;
    RadListBox1.DataBind();
}

protected void RadListBox2_Inserted(object sender, RadListBoxEventArgs e)
{
    ArrayList myTest = new ArrayList();
    //StringBuilder s = new StringBuilder();
    for (int i = 0; i < e.Items.Count; i++)
    {
        myTest.Add(rlbGI_BU.Items[i].Text);

        foreach (string x in myTest)
        {
                lblInsertedList2.Text += x + ", " + "&nbsp;";
        }
    } 
}

protected void RadListBox2_Deleted(object sender, RadListBoxEventArgs e)
{
    lblDeletedList2.Text += e.Items.Count.ToString() + " items are deleted";
}

protected void RadListBox1_Transferred(object sender, RadListBoxTransferredEventArgs e)
{       
    lblTransdList1.Text += e.Items.Count.ToString() + " items are transferred";
}

Я хочу получить перенесенные предметы из RadListBox1 в RadListBox2 внутри Label контроль (скажем lblInsertedList2 Ярлык) потому что позже я должен связать RadGrid основанный на Предметах, которые находятся внутри RadListBox2.
Для этого я создал RadListBox2_Inserted событие, внутри которого я пытаюсь получить предметы RadListBox2 в лейбле.
Теперь, когда я передаю более 1 элемента RadListBox1 в RadListBox2 (используя кнопку ctrl), первый выбранный элемент повторяется.

Пример: RadListBox1 имеет элементы "a", "b", "c". когда я передаю все "a", "b", "c" вместе из RadListBox1 в RadListBox2 (используя кнопку ctrl)

Я вижу следующий вывод: a a b a b c

Правильный вывод должен быть: a b c

Пожалуйста, проверьте ниже снимок для вышеупомянутой проблемы: Опять же, RadListBox1 имеет элементы "a", "b", "c", когда я перемещаю элементы 1 на 1 из RadListBox1 в RadListBox2

Пример: когда я только передаю a, я вижу вывод ниже: a (1-й раз), когда я только передаю b, я вижу вывод ниже: a, a (2-й раз), когда я только передаю c, я вижу вывод ниже: a, a, (3-й раз)

Пожалуйста, проверьте ниже снимок для вышеупомянутой проблемы:
2.) Я хочу связать RadGrid с помощью:

  • _SPID = Request.QueryString ["SPID"]
  • Элементы, попадающие в RadListBox2 (только выбранные элементы из RadListBox1)

сейчас я обязуюсь RadGrid используя только Request.QueryString["SPID"], поэтому я получаю все данные, связанные с "SPID"

Пример:

Значение SPID     RadListBox1_Items

014 тест1

014 б тест2

014 c test3

Мое требование: если предположить в RadListBox2 получил только 2 пункта "а", "с", то данные в RadGrid должен связываться на основе элементов RadListBox2 и "SPID"

Значение SPID     RadListBox2_Items

014 тест1

014 c test3

Надеюсь, я четко изложил свое требование. Пожалуйста, дайте мне знать, если есть путаница. Пожалуйста, ответьте на оба вопроса.
Заранее спасибо.

1 ответ

Решение

Я думаю, что приведенный ниже код будет соответствовать вашим требованиям

protected void RadListBox2_Inserted(object sender, RadListBoxEventArgs e)
{
    ArrayList myTest = new ArrayList();
    //StringBuilder s = new StringBuilder();
    for (int i = 0; i < e.Items.Count; i++)
    {
        myTest.Add(e.Items[i].Text);    

    } 
     foreach (string x in myTest)
        {
                lblInsertedList2.Text += x + ", " + "&nbsp;";
        }
}

ИЛИ просто

protected void RadListBox2_Inserted(object sender, RadListBoxEventArgs e)
{
    for (int i = 0; i < e.Items.Count; i++)
    {
        lblInsertedList2.Text += e.Items[i].Text + ", " + "&nbsp;";
    } 

}

Надеется, что это помогает...

Другие вопросы по тегам