PDA

View Full Version : مبتدی: جستجو در datatable



سیروس مقصودی
جمعه 04 تیر 1395, 17:53 عصر
با سلام

من میخواهم یک جدول را در داخل یک datatable ریخته و بعد در داخل آن و در داخل یک فیلد عملیات جستجو انجام دهم آیا این امکان وجود دارد ؟ ( بدون استفاده از دستور where در داخل Sql)

با تشکر

systam
جمعه 04 تیر 1395, 21:00 عصر
بین این کد به دردت نمیخوره :

DataRow[] dr = null;
(dr == dt.Select(id == 1;

mrprestige
جمعه 04 تیر 1395, 22:19 عصر
سلام دوست من ، از این طریق میتونی جدولت رو داخل Datatable بریزی و داخل دیتاگرید نمایشش بدی

var dt = new DataTable();
var cn = new SqlConnection("Connection String");
var da = new SqlDataAdapter("select * from Tabel", cn);
da.Fill(dt);
dataGridView1.DataSource = dt;


و از طریق Hashtable عملیات جستجو روی رکورد هاتو انجام بدی

int R = dataGridView1.RowCount;
Hashtable pList = new Hashtable();
pList.Add("نام ستون مورد نظر", textBox1.Text);
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
for (int i = 0; i < R; i++)
{
if (Convert.ToInt32(dataGridView1.Rows[i].Cells["نام ستون مورد نظر"].Value)==Convert.ToInt32(textBox1.Text))
{
dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[شماره اندیس ستون];
}
}


در این قسمت منظورم از " نام ستون مورد نظر " همون ستونی که میخوای عملیات جستجو براساس اون انجام بشه و منظور از " شماره اندیس ستون " شماره ستونی که عملیات جستجو براساس اون انجام بشه (یادت نره در دیتاگرید شماره ها از صفر شروع میشه ) و مقدار مورد نظرت ( جهت جستجو) رو داخل کنترل مورد نظرت ( من اینجا با Textbox 1 مثال زدم ) قرار بده و تمام .
پیروز و موفق باشی
از کدنویسی لذت ببری.

Answer
جمعه 04 تیر 1395, 22:48 عصر
دوست عزیز واسه واکشی اطلاعات از دیتابیس به جدول که دوستان توضیح دادن و راه های مختلفی وجود داره یکیش اینه:


string connString = "Data Source=.;Initial Catalog=AccountingDB;Integrated Security=True";
string query = "select * from tblCo";


SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(query, conn);
DataTable dataTable = new DataTable();
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dataTable);

conn.Close();
da.Dispose();
DataList1.DataSource = dataTable;
DataList1.DataBind();




واسه جست جو در یک datatable هم میتونید از دستور زیر استفاده کنید:



dataTable.Select("شرط");

سیروس مقصودی
جمعه 04 تیر 1395, 22:56 عصر
dataTable.Select("شرط");

[/CSHARP]

منظور از شرط چیست و چگونه بایستی شرط را بنویسم و چگونه میتوانم از بین چند فیلد , فیلد مورد نظر را انتخاب کنم .

دستور da.Dispose(); چه عملی را انجام میدهد .

ببخشید که این سوالات را میکنم چون مبتدی هستم .
با تشکر

Answer
شنبه 05 تیر 1395, 16:20 عصر
منظور از شرط چیست و چگونه بایستی شرط را بنویسم و چگونه میتوانم از بین چند فیلد , فیلد مورد نظر را انتخاب کنم .

دستور da.Dispose(); چه عملی را انجام میدهد .

ببخشید که این سوالات را میکنم چون مبتدی هستم .
با تشکر


وقتی شما یک جدول دارید پس تعدادی ستون و سطر دارید شروط بر اساس این سطر و ستونها کار میکنه
مثلا شما ستونی به نام number داشته باشید و میخواهیم تمام سطرهایی که عدد کوچکتر از 10 درون این ستون دارد فیلتر کنیم


dataTable.Select("number < 10");


و در مورد dispose آبجکتهایی که نیازی به استفاد از اونها رو نداشته باشیم رو از حافظه حذف میکنه
برای مثال اینجا من پس از انجام دستور Fill دیگه نیازی به da یا همون دیتاآداپتر نداشتم و اون رو آزاد کردم

سیروس مقصودی
شنبه 05 تیر 1395, 16:56 عصر
با تشکر
آیا این دستور عمل فیلتر را انجام میدهد .تا آنجا که من متوجه شده ام با اجرای دستور dataTable.Select("number < 10"); کلیه رکوردهایی که number آنها کوچکتر از 10 باشد را به نمایش در می آورد . آیا نمیدانم درست متوجه شده ام.
من میخواهم مثلا از یین 20 رکورد که number شان باهم فرق دارند به ترتیب از ابتدای رکورد جستجو کرده و اولین رکوردی را که مثلا number آن 10 است را پیدا کرده و مثلا شماره رکورد یا هر فیلد دیگری از رکورد پیدا شده را نمایش دهد

دلتنگ اسمان
شنبه 05 تیر 1395, 20:18 عصر
با حلقه میتونی به مقدار فیلد مورد نظر دسترسی پیدا کنی و عملیات مورد نظر را بر رویش انجام دهی.
حتی میتونی بعد از اتمام کار دوباره جای خودش در دیتاتیبل ثبت کنی.

foreach (DataRow arow in dt.Rows)
{
string str= (arow["columnname"].ToString());

strانجام عملیات بر روی


arow["columnname"] = str;
}