لطفا راهنمایی کنید اگر بخواهم از یک listview یک آیتم با subItems هایش را به listview دیگر منتقل کنم چگونه؟
لطفا راهنمایی کنید اگر بخواهم از یک listview یک آیتم با subItems هایش را به listview دیگر منتقل کنم چگونه؟
این کد برای منتقل کردن آیتم شماره (itemIndex) از listView1 به listView2 هست.
listView2.Items.Add(listView1.Items[itemIndex]);
[QUOTE=ASHKANLAEI;2425571]این کد برای منتقل کردن آیتم شماره (itemIndex) از listView1 به listView2 هست.
listView2.Items.Add(listView1.Items[itemIndex]);[/QUOTE
سلام بازم نشد
مشکل من اینه که ی جستجو میکنم داخل لیست ویو 1 ی آیتم رو پیدا میکنه فقط همین آیتم رو بدون ساب آیتمها داخل لیست ویو 2 نمایش میده . کل آیتم و ساب آیتمها رو نمایش نمیده. ببخشید من مبتدی هستم اگه منظورم رو بد بیان میکنم شرمنده
Untitled.jpg[QUOTE=the king;2425594]سلام . ی عکس گذاشتم تا بهتر متوجه مشکل بشید
اول تکست باکسهای نام و فامیل و شماره را وارد کرده دکمه ورود را میزنیم تکستهای داخل تکست باکسها به لیست ویو 1 اضافه میشود . بعد داخل تکست باکس جستجو یک حرف را تایپ میکنیم اگر شامل هر یک از لیست ویو های جدول 1 باشد را داخل لیست ویور2 نمایش دهد . الان کلمه حاوی حرف وارد شده را پیدا میکند ولی فقط همان کلمه را داخل ستون نام لیست ویور2 نمایش میدهد و تمام لیست و ساب آیتمها را نمایش نمیدهد.
خواسته من اینه که لیست ویو که کلمه پیدا شده داخل آن است را کامل همراه ساب فورمها در لیست ویو 2 نمایش دهد.
متاسفانه مشکل با شیوه فوق حل نشد
آخرین ویرایش به وسیله alinoori76 : یک شنبه 24 آذر 1398 در 15:33 عصر دلیل: اصلاح
خب شما کد هاتون در چه متغیری ذخیره میشه چه شکلی هست کدتون باید بگین دیگه.
این کدی که اینجا نوشته شد برای انتقال یک آیتم لیست 1 از روی شماره اش در لیست، به لیست 2 هست و مشکلی نداره.
[QUOTE=alinoori76;2425625]Untitled.jpgوقتی کدی که نوشتید رو ارائه نمی کنید راهنمایی کردن برای تغییرش هم دشوار میشه.
private void button2_Click(object sender, EventArgs e)
{
var search = textBoxSearch.Text.Trim();
if (search.Length == 0)
{
return;
}
foreach (ListViewItem item in listView1.Items)
{
if (item.Text.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
listView1.Items.Remove(item);
listView2.Items.Add(item);
continue;
}
foreach (ListViewItem.ListViewSubItem subItem in item.SubItems)
{
if (subItem.Text.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) == -1)
{
continue;
}
listView1.Items.Remove(item);
listView2.Items.Add(item);
break;
}
}
}
formmm.jpg public partial class Form1 : Form
{
public string li;
public string li2;
public Form1()
{
InitializeComponent();
}
private void ButtonVOROOD_Click(object sender, EventArgs e)
{
if (TextBoxNAM.Text == "" || TextBoxFAMIL.Text == "" || TextBoxTEL.Text == "")
{
label5.Visible = true;
this.label5.Text = "لطفا فیلدهای فوق را وارد کنید";
}
else
{
List<string> s = new List<string>() { TextBoxNAM.Text, TextBoxFAMIL.Text, TextBoxTEL.Text };
ListViewItem a = new ListViewItem(s.ToArray());
ListView1.Items.Add(a);
TextBoxNAM.Text = "";
TextBoxFAMIL.Text = "";
TextBoxTEL.Text = "";
label5.Visible = false;
//int dd = ListView1.Items.Count;
//label8.Text = dd.ToString();
}
}
private void TextBoxSEARCH_TextChanged(object sender, EventArgs e)
{
if (TextBoxSEARCH.Text != "")
{
for (int i = 0; i < ListView1.Items.Count; i++)
{
for (int j = 0; j < ListView1.Columns.Count; j++)
{
li = ListView1.Items[i].SubItems[j].Text;
bool a = li.Contains(TextBoxSEARCH.Text);
if (a == true)
{
// li = ListView1.Items[i].SubItems[j].Text;
ListView2.Items.Add(li);
}
}
}
}
else
{
ListView2.Items.Clear();
}
}
private void TextBoxSEARCH_TextChanged_1(object sender, EventArgs e)
{
}
}
}
شما li رو Add می کنید که یک SubItem ئه، باید بجای li اون ListView1.Items[i] رو Add کنید که Item ئه و شامل همه SubItem ها هم میشه.
خودش رو هم نه، یک کپی اش رو، با Clone ازش کپی میگیرید.
بعد Add کردن هم یک ;break اضافه کنید تا از حلقه for j خارج بشه.
private void TextBoxSEARCH_TextChanged(object sender, EventArgs e)
{
ListView2.Items.Clear();
if (TextBoxSEARCH.TextLength == 0)
{
return;
}
for (int i = 0; i < ListView1.Items.Count; i++)
{
for (int j = 0; j < ListView1.Columns.Count; j++)
{
li = ListView1.Items[i].SubItems[j].Text;
bool a = li.Contains(TextBoxSEARCH.Text);
if (a)
{
ListView2.Items.Add((ListViewItem)ListView1.Items[i].Clone());
break;
}
}
}
}
سلام. اصلا نیاز به این همه کد و دوتا لیست ویو ندارید برای جستجوی یک آیتم در لیست ویو . آیتم هاتون اگه توی دیتا بیس هست کافیه فیلترش کنید و اونهایی که فیلتر شدن رو در لیستتون نمایش بدید همین.
واگه هم دیتابیسی در کار نیست و یک لیست ویو دارید که اطلاعاتتون رو به صورت موقت ذخیره می کنه میتونید آیتم هایی که جستجو شده رو Select کنید و متودی هم برای نمایش آیتم جستجو شده خود لیست ویو داره.
وگر نه که هیچی!!!
آخرین ویرایش به وسیله ROSTAM2 : دوشنبه 25 آذر 1398 در 09:08 صبح
سلام . تشکر من دیتا بیس ندارم لطف دارید.
شما باید خارج از اون ListView همه ListViewItem هایی که دارید نگهدارید، مثلا در یک متغیر از نوع <List<ListViewItem مثلا ()<private _list = new List<ListViewItem و هر وقتی آیتمی به ListView اضافه می کنید، مثلا با اون دکمه ButtonVOROOD_Click، علاوه بر اینکه آیتم رو به ListView1 اضافه می کنید به list_ هم اضافه کنید، یعنی همراه ListView1.Items.Add(a) کد list.Items.Add(a)_ رو هم اجرا کنید.
اینطوری شما همیشه لیست همه آیتم ها رو، چه نمایش داده شده باشن و چه نمایش داده نشده باشن رو داخل list_ دارید.
حالا وقتی می خواهید جستجو کنید، بجای ListView1.Items سراغ list_ میروید و داخل list_ رو میگردید، مثلا بجای ListView1.Items[i].SubItems[j] از list[i].SubItems[j]_ استفاده می کنید.