Получить все переданные элементы 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>
<asp:Label runat="server" ID="lblInsertedList2"></asp:Label>
<asp:Label runat="server" ID="lblTransdList1"></asp:Label>
Код 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 + ", " + " ";
}
}
}
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 + ", " + " ";
}
}
ИЛИ просто
protected void RadListBox2_Inserted(object sender, RadListBoxEventArgs e)
{
for (int i = 0; i < e.Items.Count; i++)
{
lblInsertedList2.Text += e.Items[i].Text + ", " + " ";
}
}
Надеется, что это помогает...